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ę 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ąć
- https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html o konstruktorach na stronie Oracle Java.
- https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html argumenty w konstruktorach.
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