, 1 / Javakurs 2011 – Objektorientierung Objektorientierte Programmierung I This work is licensed under the Creative Commons Attribution-ShareAlike 3.0.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Imperative Programmierung
der Universität Oldenburg
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Einführung in die Programmierung Ausführbare Klassen
Einführung in die Programmierung Zusammenfassung
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
der Universität Oldenburg
Verteilte Software - Java - Prozedurale Programmierung 1
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Klassenvariable (auch Klassendaten bzw. statische Attribute genannt) und statische Methoden.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Programmieren mit JAVA
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Zusammenfassung Vorwoche
DVG Einführung in Java1 Einführung in JAVA.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Objektorientiertes Konstruieren
EPROG Tutorium #3 Philipp Effenberger
Starten der Entwicklungsumgebung (IDE)
PI Burgenland Java und JavaScript 1. Teil
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Instanzmethoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Einführung in die Programmierung mit Java
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
Objektorientierte Programmierung (OOP)
Java Programme nur ein bisschen objektorientiert.
C++ FÜR cOMPUTERSPIELENTWICKLER
Objektorientierung in Java Java-Kurs LE 5.
, 1 / Javakurs 2012 – Objektorientierung Objektorientierte Programmierung I This work is licensed under the Creative Commons Attribution-ShareAlike 3.0.
Konstruktoren.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Hello World! Javakurs 2013 Arne Kappen
Zwei Denkansätze zur Klasse Schlange
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Java-Kurs - 5. Übung Das Paradigma der Objektorientierung (OO)
Einführung in die Programmierung mit Java
Grundkurs Informatik 11-13
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Implementieren von Klassen
Statische und Nichtstatische Methoden Properties / Eigenschaften
Grundkurs Informatik 11-13
 Präsentation transkript:

, 1 / Javakurs 2011 – Objektorientierung Objektorientierte Programmierung I This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. Martin Kresse & Katrin Lang 21. März 2011 Technische Universität Berlin

, 2 / return int Parameter long Variablen Array boolean short switch else for byte do main continue while Rückgabewert double break import float Datentyp public default if void char Methode case Operator Was wir bereits kennen Wiederholung

, 3 / Warum Objektorientierung? Motivation separation of concerns (Trennung der Aufgabenbereiche) flexible Kombinierbarkeit höhere Abstraktionsebene --> Verringerung der Komplexität Wiederverwendbarkeit...

, 4 / Worum geht es heute? Inhalt Objekt Zustand Verhalten Identität Lebensdauer Schnittstelle

, 5 / Attribute speichern Zustand Zustand Haarfarbe Alter Geschlecht Name Picture by Phillip Pessar, fotocommunity.com

, 6 / Attribute speichern Zustand Zustand Alter Name Haarfarbe Geschlecht Picture by FrankyOne, fotocommunity.com

, 7 / Klasse vs. Instanz Zustand Klasse Mensch = Bauplan Instanzen = Objekte

, 8 / Klassen definieren Attribute Zustand class Human { String name; int age; } Attribute / Instanzvariablen Klassenname Klasse = Bauplan für Objekte beschreibt Eigenschaften aller Objekte Objekt = Instanz einer Klasse Konvention zur Schreibweise: Klassennamen groß primitive Datentypen klein Variablennamen klein

, 9 / Erstellen von Objekten Klassen class Human { String name; int age; } Human martin = new Human(); zeigt auf eine Instanz der Klasse Human

, 10 / Zugriff auf Attribute Klassen class Human { String name; int age; } Human martin = new Human(); martin.name = "Martin Kresse"; martin.age = 31; System.out.println(martin.name) ; System.out.println(martin.age);

, 11 / Arbeiten mit mehreren Klassen Klassen class Lecturer { public static void main(String[] args) { Human martin = new Human(); martin.name = "Martin Kresse"; martin.age = 31; System.out.println(martin.name); System.out.println(martin.age); } class Human { String name; int age; } Listing 2: Lecturer.java Listing 1: Human.java genau eine Klasse pro Datei Dateiname muss identisch mit Klassennamen sein

, 12 / $ javac █$ javac Lecturer.java $ $ javac Lecturer.java $ ls Human.class Human.java Lecturer.class Lecturer.java $ $ javac Lecturer.java $ ls Human.class Human.java Lecturer.class Lecturer.java $ java █ $ javac Lecturer.java $ ls Human.class Human.java Lecturer.class Lecturer.java $ java Lecturer Arbeiten mit mehreren Klassen Klassen class Lecturer { public static void main(String[] args) { Human martin = new Human(); martin.name = "Martin Kresse"; martin.age = 31; System.out.println(martin.name); System.out.println(martin.age); } class Human { String name; int age; } Listing 2: Lecturer.java Listing 1: Human.java Abhängigkeiten werden erkannt, Klasse mit main() reicht aus

, 13 / Methoden implementieren Verhalten Verhalten laufen Picture by Kevin Cole, flickr.com

, 14 / Methodendefinition Verhalten Listing 3: Human.java class Human { String name; int age; void birthday() { age++; if (age >= 18) { // TODO: sex, drugs & rock'n'roll }

, 15 / Methodenaufruf Verhalten Human martin = new Human(); martin.name = "Martin Kresse"; martin.age = 31; martin.birthday(); System.out.println("Alter: " + martin.age); Ausgabe: Alter: 32

, 16 / Bedeutung von static Verhalten Human.birthday(); Human.age = 18; Human dorianGray = new Human(); //... dorianGray.birthday(); dorianGray.age = Math.min(24, dorianGray.age); System.out.println("Alter:" + dorianGray.age); Klassen-Methoden nur Zugriff auf Klassenvariablen Können direkt auf Klasse aufgerufen werden Instanz-Methoden Zugriff auf Klassen- und Instanzvariablen erfordern Erstellung eines Objektes statische Methodennicht-statische Methoden Methode min() ist static Attribut out ist static

, 17 / Objekte haben eine Identität Identität Picture by pizzo, flickr.com

, 18 / Variablen speichern Referenzen Identität Bulle Schatzi Papi

, 19 / Referenzen sind... anders Identität int a = 0; int b = a; a++; System.out.println(a); System.out.println(b); Human a = new Human(); Human b = a; a.age++; System.out.println(a.age); System.out.println(b.age); Ergebnis: a: 1 b: 0 Ergebnis: a.age: 1 b.age: 1

, 20 / Referenzen Identität Referenz a Referenz b

, 21 / Referenzen Identität Referenz a Referenz b ) ) ) ) )

, 22 / Identität Referenzen Referenz a Referenz b

, 23 / Referenzen Identität Referenz a Referenz b ) ) ) ) )

, 24 / Referenzen Identität Referenz a Referenz b

, 25 / Konstruktoren Picture by txefar, flickr.com

, 26 / Standard-Konstruktor Konstruktoren Human martin = new Human(); class Human { String name; int age; Human() { name = null; age = 0; } Listing 4: Human.java (mit Standardkonstruktor) Erzeugung eines Objektes:

, 27 / Vorsicht Konstruktoren

, 28 / null-Referenzen Konstruktoren class Human { [...] void greet() { if (name.contains("Dr.")) System.out.println("Guten Tag!"); else System.out.println("Hi!"); } Listing 5: Human.java Human someone = new Human(); someone.greet(); hi? Exception in thread "main" java.lang.NullPointerException at Human.greet(Human.java:24) at Human.main(Human.java:15) null!

, 29 / Konstruktoren mit Parametern Konstruktoren Human nobody = new Human(); Human karl = new Human("Karl-Theodor", 39); karl.greet(); class Human { String name; int age; Human(String name, int age) { this.name = name; this.age = age; } [...] } Listing 6: Human.java (mit parameterisiertem Konstruktor) Erzeugung eines Objektes:

, 30 / Vorsicht Konstruktoren

, 31 / Konstruktoren mit Parametern Konstruktoren class Human { String name; int age; Human(String name, int age) { name = name; age = age; } [...] } Listing 7: Human.java (mit defektem Konstruktor) Human vitali = new Human("Dr. Eisenfaust", 39); vitali.greet(); Parameter überschatten gleichnamige Instanzvariablen Parameter überschatten gleichnamige Instanzvariablen Ergebnis: java.lang.NullPointerException

, 32 / Überblick Konstruktoren Konstruktoren Konstruktoren initialisieren Objekten Name = Klassenname Kein Rückgabewert Wird kein Konstruktor definiert, existiert ein impliziter Default-Konstruktor ohne Parameter

, 33 / Compiletime- und Runtime-Fehler Häufige Fehler Human nobody; nobody.birthday(); nobody = null; nobody.birthday(); Human noOne = nobody; noOne.birthday(); Human somebody = new Human(); somebody.birthday(); System.out.print(somebody.name.length()); Human martin = new Human("Martin", 31); martin.birthday(); Human javaTutorOfTheYear = martin; javaTutorOfTheYear.birthday(); Compiletime Fehler Runtime Fehler

, 34 / Kapselung (Information Hiding) Kapselung Picture by Helga Kopp (Helga_262), flickr.com

, 35 / Direkter Variablenzugriff Kapselung Human martin = new Human(); martin.age = 31; martin.birthday(); System.out.println("Alter: " + martin.age); Ausgabe: Alter: 32

, 36 / Illegaler Zustand Kapselung Human martin = new Human(); martin.age = -2; martin.birthday(); System.out.println("Alter: " + martin.age); Ausgabe: Alter: -1

, 37 / Getter- und Setter-Methoden Kapselung Listing 8: Human.java (mit Getter- und Setter-Methoden) class Human { private String name; private int age; public void setAge(int age) { this.age = age; } public int getAge() { return age; } Instanzvariablen sind versteckt Zugriffsmethoden sind öffentlich

, 38 / Die Idee von Kapselung Kapselung Attribute Methoden M e t h o d e n M e t h o d e n

, 39 / Die Idee von Kapselung Kapselung int age birthday s e t A g e g e t A g e

, 40 / Die Idee von Kapselung Kapselung Date dateOfBirth birthday s e t A g e g e t A g e

, 41 / Getter- und Setter-Methoden Kapselung Listing 9: Human.java (mit Geburtsdatum statt Alter) import java.util.Date; class Human { private String name; private Date dateOfBirth; public int getAge() { Date today = new Date(); return today.getYear() - dateOfBirth.getYear(); } Hausaufgabe: getAge() korrigieren

, 42 / Fragen? Vielen Dank für Eure Aufmerksamkeit Picture by Marco Bellucci, flickr.com

, 43 / Quellen Vielen Dank für Eure Aufmerksamkeit Piktogramme: Fotos: