11
Objektsammlungen Andreas Zeller Programmieren 2 Andreas Zeller Konzepte (Wiederholung vom Dienstag) Abstraktion Modularisierung Klassen definieren Typen Klassendiagramm Objektdiagramm Objektreferenz Primitiver Typ Objekterzeugung Überladen Interner Aufruf Externer Aufruf Debugger Vgl. Kapitel 4 im BlueJ-Buch. Bis Kapitel 6 bleiben wir weiter dicht am BlueJ-Buch, das somit die eigentliche Referenz bildet. 1 2 3

Objektsammlungen - uni-saarland.de · Objektsammlungen Andreas Zeller Programmieren 2 Andreas Zeller Konzepte (Wiederholung vom Dienstag) •Abstraktion •Modularisierung •Klassen

Embed Size (px)

Citation preview

Page 1: Objektsammlungen - uni-saarland.de · Objektsammlungen Andreas Zeller Programmieren 2 Andreas Zeller Konzepte (Wiederholung vom Dienstag) •Abstraktion •Modularisierung •Klassen

ObjektsammlungenAndreas Zeller

Programmieren 2Andreas Zeller

Konzepte(Wiederholung vom Dienstag)

• Abstraktion

• Modularisierung

• Klassen definieren Typen

• Klassendiagramm

• Objektdiagramm

• Objektreferenz

• Primitiver Typ

• Objekterzeugung

• Überladen

• Interner Aufruf

• Externer Aufruf

• Debugger

Vgl. Kapitel 4 im BlueJ-Buch.Bis Kapitel 6 bleiben wir weiter dicht am BlueJ-Buch, das somit die eigentliche Referenz bildet.

1

2

3

Page 2: Objektsammlungen - uni-saarland.de · Objektsammlungen Andreas Zeller Programmieren 2 Andreas Zeller Konzepte (Wiederholung vom Dienstag) •Abstraktion •Modularisierung •Klassen

• Die Vorlesung ist…

Meinungen

zu langsam 5zu schnell 0

Hörer

52%

24%

24%

Anfänger Schein Prog1 Unbekannt

Programmierer

0

50

100

Beliebige Leistungsmetrik

100

10

Schlechteste Beste

4

5

6

Page 3: Objektsammlungen - uni-saarland.de · Objektsammlungen Andreas Zeller Programmieren 2 Andreas Zeller Konzepte (Wiederholung vom Dienstag) •Abstraktion •Modularisierung •Klassen

Die VorlesungSc

hwie

rigk

eit

0

5

10

Beliebige Leistungsmetrik

Schlechteste Beste

heute

Der kleine Unterschied

// 25121xx

import java.io.*;

public String getBye() { return "Bye!";}

public String getHello() { return "Tach "+ getName()+ "!";}

Der kleine Unterschied

// 25079xx

import java.io.*;

public String getBye() { return "Adieu!";}

public String getHello() { return "Tach "+ getName()+ "!";}

7

8

9

Page 4: Objektsammlungen - uni-saarland.de · Objektsammlungen Andreas Zeller Programmieren 2 Andreas Zeller Konzepte (Wiederholung vom Dienstag) •Abstraktion •Modularisierung •Klassen

Benotung

35%

25%

20%

15%

5%

GreeterVendingMachineProjekt 3Projekt 4Projekt 5

Dauer

4 Wochen

3 Wochen

3 Wochen

2 Wochen

1 Wochen

GreeterVendingMachineProjekt 3Projekt 4Projekt 5

Die Projekte

Schw

ieri

gkei

t

0

5

10

Beliebige Leistungsmetrik

Schlechteste Beste

heute

10

11

12

Page 5: Objektsammlungen - uni-saarland.de · Objektsammlungen Andreas Zeller Programmieren 2 Andreas Zeller Konzepte (Wiederholung vom Dienstag) •Abstraktion •Modularisierung •Klassen

ObjektsammlungenAndreas Zeller

Sammlungen in ML

Listen [1, 2, 3]Tupel (1, 2)Vektoren Vector.sub(v, i)Mengen set[1, 2, 3]

Sammlungen in JavaAbstractCollection • AbstractList • AbstractQueue • AbstractSequentialList • AbstractSet • ArrayBlockingQueue • ArrayList • AttributeList • BeanContextServicesSupport • BeanContextSupport • ConcurrentLinkedQueue • CopyOnWriteArrayList • CopyOnWriteArraySet • DelayQueue • EnumSet • HashSet • JobStateReasons • LinkedBlockingQueue • LinkedHashSet • LinkedList • PriorityBlockingQueue • PriorityQueue • RoleList • RoleUnresolvedList • Stack • SynchronousQueue • TreeSet • Vector

Vgl. Kapitel 4 im BlueJ-Buch.Bis Kapitel 6 bleiben wir weiter dicht am BlueJ-Buch, das somit die eigentliche Referenz bildet.13

14

29 Stück

15

Page 6: Objektsammlungen - uni-saarland.de · Objektsammlungen Andreas Zeller Programmieren 2 Andreas Zeller Konzepte (Wiederholung vom Dienstag) •Abstraktion •Modularisierung •Klassen

04/26/2007 10:33 PMCollection (Java 2 Platform SE 5.0)

Page 1 of 10http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collection.html

Overview Package Class Use Tree Deprecated Index Help JavaTM 2 PlatformStandard Ed. 5.0 PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes

SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

java.util

Interface Collection<E>

All Superinterfaces:Iterable<E>

All Known Subinterfaces:BeanContext, BeanContextServices, BlockingQueue<E>, List<E>, Queue<E>, Set<E>,SortedSet<E>

All Known Implementing Classes:AbstractCollection, AbstractList, AbstractQueue, AbstractSequentialList, AbstractSet,ArrayBlockingQueue, ArrayList, AttributeList, BeanContextServicesSupport,BeanContextSupport, ConcurrentLinkedQueue, CopyOnWriteArrayList, CopyOnWriteArraySet,DelayQueue, EnumSet, HashSet, JobStateReasons, LinkedBlockingQueue, LinkedHashSet,LinkedList, PriorityBlockingQueue, PriorityQueue, RoleList, RoleUnresolvedList, Stack,SynchronousQueue, TreeSet, Vector

public interface Collection<E>

extends Iterable<E>

The root interface in the collection hierarchy. A collection represents a group of objects, known as itselements. Some collections allow duplicate elements and others do not. Some are ordered and othersunordered. The JDK does not provide any direct implementations of this interface: it providesimplementations of more specific subinterfaces like Set and List. This interface is typically used to passcollections around and manipulate them where maximum generality is desired.

Bags or multisets (unordered collections that may contain duplicate elements) should implement thisinterface directly.

All general-purpose Collection implementation classes (which typically implement Collectionindirectly through one of its subinterfaces) should provide two "standard" constructors: a void (noarguments) constructor, which creates an empty collection, and a constructor with a single argument oftype Collection, which creates a new collection with the same elements as its argument. In effect, thelatter constructor allows the user to copy any collection, producing an equivalent collection of thedesired implementation type. There is no way to enforce this convention (as interfaces cannot containconstructors) but all of the general-purpose Collection implementations in the Java platform librariescomply.

The "destructive" methods contained in this interface, that is, the methods that modify the collection onwhich they operate, are specified to throw UnsupportedOperationException if this collection does notsupport the operation. If this is the case, these methods may, but are not required to, throw anUnsupportedOperationException if the invocation would have no effect on the collection. Forexample, invoking the addAll(Collection) method on an unmodifiable collection may, but is not

Sammlungen in JavaAbstractCollection • AbstractList • AbstractQueue • AbstractSequentialList • AbstractSet • ArrayBlockingQueue • ArrayList • AttributeList • BeanContextServicesSupport • BeanContextSupport • ConcurrentLinkedQueue • CopyOnWriteArrayList • CopyOnWriteArraySet • DelayQueue • EnumSet • HashSet • JobStateReasons • LinkedBlockingQueue • LinkedHashSet • LinkedList • PriorityBlockingQueue • PriorityQueue • RoleList • RoleUnresolvedList • Stack • SynchronousQueue • TreeSet • Vector

Sammlungen in JavaAbstractCollection • AbstractList • AbstractQueue • AbstractSequentialList • AbstractSet • ArrayBlockingQueue • ArrayList • AttributeList • BeanContextServicesSupport • BeanContextSupport • ConcurrentLinkedQueue • CopyOnWriteArrayList • CopyOnWriteArraySet • DelayQueue • EnumSet • HashSet • JobStateReasons • LinkedBlockingQueue • LinkedHashSet • LinkedList • PriorityBlockingQueue • PriorityQueue • RoleList • RoleUnresolvedList • Stack • SynchronousQueue • TreeSet • Vector

16

17

18

Page 7: Objektsammlungen - uni-saarland.de · Objektsammlungen Andreas Zeller Programmieren 2 Andreas Zeller Konzepte (Wiederholung vom Dienstag) •Abstraktion •Modularisierung •Klassen

Demo: Notebook

searchNote()

/** * Search a note */ public String searchNote(String searchString) { for (String note : notes) { if (note.contains(searchString)) { return note; } } return ""; // Note not found }

19

ArrayList: Array wechselnder Größe - Generische Klassen - Indizes - Items entfernen - ungültige Indizes - for-each - while - break(!)

20

21

Page 8: Objektsammlungen - uni-saarland.de · Objektsammlungen Andreas Zeller Programmieren 2 Andreas Zeller Konzepte (Wiederholung vom Dienstag) •Abstraktion •Modularisierung •Klassen

Demo: Auktionssystem

Sammlungen

flexible Größe feste Größe

aus java.util.* eingebaut

nehmen nur Objekte auf

Objekte + primitive Typen

zahlreiche Methoden

effizienterZugang

22

Lot - null - Auction - Anonyme Objekte

23

24

Page 9: Objektsammlungen - uni-saarland.de · Objektsammlungen Andreas Zeller Programmieren 2 Andreas Zeller Konzepte (Wiederholung vom Dienstag) •Abstraktion •Modularisierung •Klassen

Weblog.txt

2007 04 23 21 072007 04 23 22 132007 04 24 07 352007 04 25 14 592007 04 26 22 59…

Jahr • Monat • Tag • Stunde • Minute

Demo: Weblogs

25

26

Felder fester Größe - for-Schleife - ++, += -

27

Page 10: Objektsammlungen - uni-saarland.de · Objektsammlungen Andreas Zeller Programmieren 2 Andreas Zeller Konzepte (Wiederholung vom Dienstag) •Abstraktion •Modularisierung •Klassen

Arrays in C#include <stdio.h>

int main(){ char name[20]; int balance = 50;

printf("Please enter your name: "); gets(name); printf("Hello, %s!\n", name); printf("Your balance is %i EUR.\n", balance);

return 0;}

Schleifen

for-eachfor (ElementType element: collection) { loop body}

whilewhile (condition) { loop body}

forfor (init; condition; post-body) { loop body}

Schleifen

for-each um alle Elemente einer Sammlung zu durchlaufen

while für eine vorher unbekannte Anzahl Schleifendurchläufe

for für eine vorher bekannte Anzahl Schleifendurchläufe

28

for-each, while, fordo-while bleibt außen vor - zu fehleranfällig

29

for-each, while, for

30

Page 11: Objektsammlungen - uni-saarland.de · Objektsammlungen Andreas Zeller Programmieren 2 Andreas Zeller Konzepte (Wiederholung vom Dienstag) •Abstraktion •Modularisierung •Klassen

Konzepte• Sammlungen

• flexibler Größe: ArrayList

• fester Größe:Array

• Iteratoren

• null

• Schleifen

• for each

• while

• for

• break

• Überlauf

31