Hallo ich hab ein paar Fragen zu dem folgenden Quelltext:
Das ist aus einem Übungsblatt, das ich zur Klausurvorbereitung noch einmal durcharbeiten möchte, aber gemerkt habe einiges noch nicht richtig verstanden zu haben.
Zunächst einmal zur Frage: Was ist ein Objekt?
In der Vorlesung haben wir folgendes gehört: Objekt = gedankliche oder reale Einheit in der Umwelt
und/oder in Software. Also ein Objekt beschreibt praktisch die Gegenstände der Umwelt.
Zu Zeile 04: Hier wird also ein Objekt Stationery erzeugt mit dem Namen s1. s1 ist also einfach nur ein Name. Zugewiesen wird dem ein Objekt aus paperClips mit dem Wert 100.
Da der Konstruktor mit einer Zahl aufgrufen wird, wird nicht der Konstruktor aus Zeille 65 gewählt, sondern der aus Zeile 66.
Stimmt das soweit?
Java:
(01) class Office {
(02)
(03) public static void main(String[] args) {
(04) Stationery s1 = new PaperClips(100);
(05) /* PaperClips clip = new Stationery("Bueroklammern"); */
(06) /* s1.putBack(10); */
(07) /* s1.use(3); */
(08) printInfo(s1);
(09) printInfo((PaperClips) s1);
(10) s1.use();
(11) ((Stationery) s1).use();
(12) s1.init(15);
(13) ((PaperClips) s1).init(15);
(14) /*
(15) Consumable c1 = new Stationery("Schere");
(16) Out.println("Das Verbrauchsmaterial wurde "
(17) + (c1.getUsed() ? "" : "nicht ") + "verbraucht");
(18) */
(19) /*
(20) Consumable c2 = new Tea(500);
(21) Out.println("Das Verbrauchsmaterial wurde "
(22) + (c2.getUsed() ? "" : "nicht ") + "verbraucht");
(23) */
(24) }
(25)
(26) static void printInfo(Stationery s) {
(27) if (s instanceof PaperClips) {
(28) Out.println("Diese Bueroklammern zaehlen als Bueromaterial.");
(29) }
(30) }
(31)
(32) static void printInfo(PaperClips clips) {
(33) Out.println("Dies sind Bueroklammern.");
(34) }
(35)
(36) }
Java:
(37) public class Stationery {
(38)
(39) double price;
(40) String description;
(41) boolean used = false;
(42)
(43) public Stationery() { };
(44) public Stationery(String description) { this.description = description; }
(45)
(46) public void use() {
(47) Out.println(description + " wurde verbraucht");
(48) used = true;
(49) }
(50)
(51) public boolean getUsed() {
(52) return used;
(53) }
(54)
(55) public void init(double price) {
(56) this.price = price;
(57) }
(58)
(59) }
Java:
(60) public class PaperClips extends Stationery {
(61)
(62) static final double PRICE_PER_CLIP = 0.0083;
(63) int numberClips;
(64)
(65) public PaperClips() { }
(66) public PaperClips(int numberClips) {
(67) this.numberClips = numberClips;
(68) description = "Packung Bueroklammern";
(69) }
(70)
(71) public void use() {
(72) if (numberClips > 0) { numberClips--; }
(73) else { super.use();}
(74) }
(75)
(76) public void use(int howMany) {
(77) if (numberClips >= howMany) { numberClips -= howMany; }
(78) else { numberClips = 0; }
(79) if (numberClips == 0) { super.use(); }
(80) }
(81)
(82) public void init(int numberClips) {
(83) this.numberClips = numberClips;
(84) price = numberClips * PRICE_PER_CLIP;
(85) }
(86)
(87) public void putBack(int howMany) {
(88) this.numberClips += howMany;
(89) }
(90)
(91) }
Das ist aus einem Übungsblatt, das ich zur Klausurvorbereitung noch einmal durcharbeiten möchte, aber gemerkt habe einiges noch nicht richtig verstanden zu haben.
Zunächst einmal zur Frage: Was ist ein Objekt?
In der Vorlesung haben wir folgendes gehört: Objekt = gedankliche oder reale Einheit in der Umwelt
und/oder in Software. Also ein Objekt beschreibt praktisch die Gegenstände der Umwelt.
Zu Zeile 04: Hier wird also ein Objekt Stationery erzeugt mit dem Namen s1. s1 ist also einfach nur ein Name. Zugewiesen wird dem ein Objekt aus paperClips mit dem Wert 100.
Da der Konstruktor mit einer Zahl aufgrufen wird, wird nicht der Konstruktor aus Zeille 65 gewählt, sondern der aus Zeile 66.
Stimmt das soweit?