Java – przykład z konstruktorami

Przykład na dedykowany konstruktor Zadeklaruj klasę Sloik zawierającą pole Dzem dzem, dedykowany konstruktor inicjujący wszystkie zadeklarowane pola i metody: otworz zamknij czyOtwarty Następnie utwórz obiekt klasy Sloik i napełnij go wybranym rodzajem dżemu, operacje powtórz dla wszystkich rodzajów dżemów. Uwaga: nakładanie dżemu do zamkniętego słoika lub pozostawienie słoika nie zamkniętego może prowadzić do zepsucia się […]

Przykład na dedykowany konstruktor Zadeklaruj klasę Sloik zawierającą pole Dzem dzem, dedykowany konstruktor inicjujący wszystkie zadeklarowane pola i metody: otworz zamknij czyOtwarty Następnie utwórz obiekt klasy Sloik i napełnij go wybranym rodzajem dżemu, operacje powtórz dla wszystkich rodzajów dżemów. Uwaga: nakładanie dżemu do zamkniętego słoika lub pozostawienie słoika nie zamkniętego może prowadzić do zepsucia się […]

Przykład na dedykowany konstruktor

Zadeklaruj klasę Sloik zawierającą pole Dzem dzem, dedykowany konstruktor inicjujący wszystkie zadeklarowane pola i metody:

  • otworz
  • zamknij
  • czyOtwarty

Następnie utwórz obiekt klasy Sloik i napełnij go wybranym rodzajem dżemu, operacje powtórz dla wszystkich rodzajów dżemów.

Uwaga: nakładanie dżemu do zamkniętego słoika lub pozostawienie słoika nie zamkniętego może prowadzić do zepsucia się produktu!

Oryginał zadnia

Zadeklaruj klasę Dzem zawierająca prywatne pola:

  • String smak,
  • double waga

Utwórz konstruktory przyjmujące jako parametry zmienne:

  • (String smak, double waga),
  • (double waga),
  • (String smak).

Dostarczone parametry konstruktorów powinny znacjonalizować pola klasy. W przypadku gdy konstruktor nie dostarcza niezbędnego parametru należny przyjąć, ze pole smak musi przyjąć wartość “No name”, natomiast waga – 100.0.

Przedstaw wykorzystanie wszystkich konstruktorów tworząc obiekty reprezentujące co najmniej trzy rodzaje dżemów.

Uwaga: należny założyć, ze tylko konstruktor z dwoma parametrami możne przypisać wartości polom klasy.

Zadanie trochę zmodyfikowane

Zadeklaruj klasę Sloik zawierająca pole Dzem dzem (lub konstruktor klasy pochodnej), dedykowany konstruktor inicjujący wszystkie zadeklarowane pola i metody:

  • otworz
  • zamknij
  • czyOtwarty
  • napełnijSloik

Wymagane pola:

  • klasa Dzem

Następnie utwórz obiekt klasy Sloik i napełnij go wybranym rodzajem Dzem.

Resources czyli od czego zacząć

class Programming {
  //constructor method
  Programming() {
    System.out.println("Constructor method called.");
  }
 
  public static void main(String[] args) {
    Programming object = new Programming(); // Creating an object
  }
}
class Language {
  String name;
 
  Language() {
    System.out.println("Constructor method called.");
  }
 
  Language(String t) {
    name = t;
  }
 
  public static void main(String[] args) {
    Language cpp  = new Language();
    Language java = new Language("Java");
 
    cpp.setName("C++");
 
    java.getName();
    cpp.getName();
  }
 
  void setName(String t) {
    name = t;
  }
 
  void getName() {
    System.out.println("Language name: " + name);
  }
}
class GrandParent {
  int a;
 
  GrandParent(int a) {
    this.a = a;
  }
}
 
class Parent extends GrandParent {
  int b;
 
  Parent(int a, int b) {
    super(a);
    this.b = b;
  }
 
  void show() {
    System.out.println("GrandParent's a = " + a);
    System.out.println("Parent's b      = " + b);
  }
}
 
class Child {
  public static void main(String[] args) {
    Parent object = new Parent(8, 9);
    object.show();
  }
}

Czyli w naszym zadaniu mamy kilka konstruktorów Dzem

Dzem(String smak, double waga) {
  this.smak = smak;
  this.waga = waga;
}

Dzem(double waga) {
  this.smak = "Nieznany";
  this.waga = waga;
}

Dzem(String smak) {
  this.smak = smak;
  this.waga = 100.0;
}

Dzem() {
  smak = "no name";
  waga = 100.0;
}

oraz kilka konstruktorów Sloik

Sloik() {
  System.out.print("Konstuktor Słoik(): ");
  this.print();
}

Sloik(Dzem p_dzem) {
  System.out.print("Konstuktor Słoik(Dzem): ");
  // sprawdzemnie czy dzem jest otwarty
  this.otworz();
  // napełnienie dzemem
  this.napelnij(p_dzem);
  this.print();
  this.dzem.print();
}

Inicjalizacja konstruktora Dzem następujące “jawnie”

przeciążenie (overloading) napelnij() Sloik klasa Dzem

package dzem;

/**
 * Exercises Java PPJ-19c
 *
 * @author
 */
public class Dzem {
  
  private String smak;
  private Double waga;
  
  void setSmak(String smak) {
    this.smak = smak;
  }
  
  void setWaga(double waga) {
    this.waga = waga;
  }
  
  public String get_smak() {
    return this.smak;
  }
  
  public Double getWaga() {
    return this.waga;
  }
  
  Dzem(String smak, double waga) {
    this.smak = smak;
    this.waga = waga;
  }
  
  Dzem(double waga) {
    this.smak = "Nieznany";
    this.waga = waga;
  }
  
  Dzem(String smak) {
    this.smak = smak;
    this.waga = 100.0;
  }
  
  Dzem() {
    smak = "no name";
    waga = 100.0;
  }
  
  void print() {
    System.out.print("Smak dzemu: " + this.smak + ", waga dzemu: " + this.waga + "kg\n");
  }
  
  /**
   * @param args
   *          the command line arguments
   */
  public static void main(String[] args) { // TODO code application logic
    
    Dzem d1 = new Dzem("agrestowy", 1111.11);
    d1.get_smak();
    d1.print();
    
    Dzem d2 = new Dzem("porzeczka");
    d2.print();
    
    Dzem d3 = new Dzem(1111.11);
    d3.print();
    
    Sloik s1 = new Sloik(d2);
    s1.czyOtwarte();
    s1.otworz();
    s1.czyOtwarte();
    s1.napelnij("truskawkowy", 10);
    s1.zamknij();
    s1.napelnij("gruszkowy", 5);
  }
  
}

class Sloik {
  
  Dzem    dzem = new Dzem();
  boolean otwarty;
  
  boolean otworz() {
    if (!czyOtwarte()) {
      System.out.print("Otwierma słoki dzemu: " + this.dzem.get_smak() + "\n");
    } else {
      System.out.print("Nie ma potrzeby otwierania słoika dzemu: " + this.dzem.get_smak() + " jest już otwarty!\n");
    }
    return otwarty = true;
  }
  
  boolean zamknij() {
    return otwarty = false;
  }
  
  boolean czyOtwarte() {
    if (otwarty == true) {
      System.out.print("Słoki dzemu: " + this.dzem.get_smak() + " jest otwarty\n");
    } else {
      System.out.print("Słoik dzemu: " + this.dzem.get_smak() + " jest zamkniety\n");
    }
    
    return otwarty;
  }
  
  boolean napelnij(String smak, double waga) {
    if (czyOtwarte()) {
      dzem.setSmak(smak);
      dzem.setWaga(waga);
      System.out.println("Napełniam słoik dzemem o smaku " + smak + " i wadze " + waga + "kg\n");
    } else {
      System.out.println("Słoik jest zamknięty nie można go napełnić\n");
      return otwarty = false;
    }
    return otwarty;
  }
  
  // przeciązenie naepłnij() -> nepełnij słoik dzemu klasą Dzem
  boolean napelnij(Dzem p_dzem) {
    if (czyOtwarte()) {
      System.out.println("Słoik " + p_dzem.get_smak() + " jest otwarty.");
    } else {
      System.out.println("Słoik jest zamknięty nie można go napełnić\n");
      return otwarty = false;
    }
    return otwarty = true;
  }
  
  void print() {
    System.out.println("Słoik dzemu " + this.dzem.get_smak() + " o wadze " + this.dzem.getWaga() + "kg.");
  }
  
  Sloik() {
    System.out.print("Konstuktor Słoik(): ");
    this.print();
  }
  
  Sloik(Dzem p_dzem) {
    System.out.print("Konstuktor Słoik(Dzem): ");
    // sprawdzemnie czy dzem jest otwarty
    this.otworz();
    // napełnienie dzemem
    this.napelnij(p_dzem);
    this.print();
    this.dzem.print();
  }
}

Online

Kompilator online: http://tpcg.io/XWuGkR

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments