Klasa kwadrat - czy konstruktor powinien sprawdzać warunki jakie powinno spełnić pole.

0

Pytania w komentarzach. Czy sugestię Netbeans zawsze są słuszne i mają sens ?

 
package figury;

public class Kwadrat extends FiguraPlaska{
    
    private double bokA;
    
    public Kwadrat(double bokA){
        setBokA(bokA);
        /*NB podkreśla na żółto i podpowiada
         * Make the class Kwadrat final
         * Make the metod setBokA final
         * Make the metod setBokA static
         * Make the metod setBokA private
         */
        
        //Wyjaśni mi ktoś sugestię Netbeansa dlaczego ?
        /* class Kwadrat final - czyli nie będzie można dzieczyć, po tej klasie
         * i rozszerzać zmieniać jak dobrze rozumiem.
        */
        //setBokA final - czyli nie będziemy mogli przesłonić tej metody po
        //w klasach dziedziczących po Kwadrat tak ?
        //metod setBokA static - nie będziemy potrzebowali tworzyć obiektów, aby
        //użyć tej metody, ale po co tak ?
        //skoro i tak zawsze będziemy tworzyć obiekt i metoda zadziała
        /*
         *Kwadrat kw = new Kwadrat(2);
         * kw.setBokA(4);
         * kw.pokazInformacje();
        */
         
        //sugestia z private hmm chyba mija się z celem z tej metody
    }
    public double getBokA(){
        return bokA;
    }
    
    public final void setBokA(double bokA){
        if(bokA > 0){
            this.bokA = bokA;
        }
        else{
            this.bokA = 1; //No właśnie na jaką wartość przeciwnym razie ustawić pole ?
            System.out.println("Długość boku powinna być większa od zera. "); //Czy ten komunikat powinnien być tutaj?
            //czy może gdzieś indziej program ma się tym zająć
        }
    }
    
    @Override
    public double obliczPole(){
        return bokA * bokA;
    }
    @Override
    public double obliczObwod(){
        return 4 * bokA;
    }
    @Override
    public void pokazInformacje(){
        System.out.println("Kwadrat o boku: " + bokA +
                ", pole: " + obliczPole() + " obwód: " + obliczObwod() + ".");
    }
}

0

//metod setBokA static - nie będziemy potrzebowali tworzyć obiektów, aby
//użyć tej metody, ale po co tak ?
w tym przypadku niemożna definiowac jej statycznej ponieważ będziemy ustawiać pole bokA które jest niestatyczne i będzie potrzebny konkretny obiekt.

1 użytkowników online, w tym zalogowanych: 0, gości: 1