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
Newest
Oldest Most Voted
Inline Feedbacks
View all comments