Konzepte benutzerdefinierter Datenstrukturen

Ähnliche Dokumente
Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

2. Programmierung in C

Einführung in die Informatik 1

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

Objektorientierte Programmierung

Modul 122 VBA Scribt.docx

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Propädeutikum zur Programmierung

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 8. Arrays. Arrays

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

2. Semester, 2. Prüfung, Lösung

Abstrakte Algorithmen und Sprachkonzepte

5.4 Klassen und Objekte

Objektorientierte Analyse und Entwurf

Prof. W. Henrich Seite 1

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Modellierung und Programmierung 1

Programmieren in C++ Arrays, Strings und Zeigerarithmetik

Dr. Monika Meiler. Inhalt

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Einstieg in die Informatik mit Java

FHZ. K20 Arrays. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

Javakurs zu Informatik I. Henning Heitkötter

Repetitorium Informatik (Java)

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Probeklausur: Programmierung WS04/05

Ein erstes Java-Programm

Kapitel 11: Wiederholung und Zusammenfassung

Computeranwendung und Programmierung (CuP)

Programmieren Tutorium

Übungsblatt 3: Algorithmen in Java & Grammatiken

Algorithmen und Datenstrukturen

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Algorithmen & Datenstrukturen

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

VisualBasic - Variablen

Software Engineering Klassendiagramme Einführung

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Institut für Programmierung und Reaktive Systeme 26. April Programmieren II. 10. Übungsblatt

Große Übung Praktische Informatik 1

5.5.8 Öffentliche und private Eigenschaften

Einführung in die Programmierung Vorlesungsprüfung

5. Tutorium zu Programmieren

Objektorientierte Programmierung OOP Programmieren mit Java

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, Uhr Bearbeitungszeit: 105 Minuten

Vererbung. Martin Wirsing. Ziele. Vererbung

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Mehr zu Datentypen: Felder, Zeiger und Strukturen

Java Einführung Methoden in Klassen

Java Einführung Klassendefinitionen

Datenfelder (Arrays) Vektoren, Matrizen, Tabellen. Dr. Beatrice Amrhein

Vererbung & Schnittstellen in C#

1. Grundlegende Konzepte in Java (6 Punkte)

Informatik II Musterlösung

Javakurs für Anfänger

Objektorientierte Programmierung

Objektorientierte Programmierung

Arrays Fortgeschrittene Verwendung

Einführung in die Java- Programmierung

Liste Programmieren Java Überblick

Programmentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur

Java: Vererbung. Teil 3: super()

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

1 Polymorphie (Vielgestaltigkeit)

II.1.1. Erste Schritte - 1 -

Einführung in die Java- Programmierung

JAVA - Methoden

Theorie zu Übung 8 Implementierung in Java

EINI I. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 10/11

Die Algorithmenbeschreibungssprache Jana

Tutorium 5 - Programmieren

C/C++ Programmierung

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

BEISPIELKLAUSUR Softwareentwicklung:

Einführung in die Java- Programmierung

Teil 1: Grundeigenschaften von Rechnern und Software

1.3 Welche Schritte werden bei der Programmerstellung benötigt? 1.5 Was sind Variablen im Kontext der Programmierung?

Automatisierung von Windows Anwendungen (4)

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Datenbankanwendungsprogrammierung Crashkurs Java

Programmierkurs Java

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Probeklausur: Programmierung WS04/05

2.2 Übersetzung objektorientierter Sprachkonstrukte

Java Virtual Machine (JVM) Bytecode

Datentypen: Enum, Array, Struct, Union

Zusammenfassung des Handzettels für Programmieren in C

Scala kann auch faul sein

C-Propädeutikum Höhere Datentypen

Einstieg in die Informatik mit Java

Transkript:

Konzepte benutzerdefinierter Datenstrukturen Thomas Röfer Variablen Reihungen Verbunde (Klassen) Enthaltensein

Rückblick Abstrakte Algorithmen und Sprachkonzepte Algorithmus Spezifikation Durchführbarkeit Korrektheit Algorithmenentwurf Sprachkonstrukte Datenspeicher/Zuweisungen Ausdrücke Sequenzierungsanweisungen Hilfskonstrukte Verzweigungen Schleifen/Iteration Rekursion f(n) f(n-1) f(n-2) PI-1 Konzepte benutzerdefinierter Datenstrukturen 2

Variablen int boolean String i b s 7 true "Hallo" Variablen haben einen Namen (i, b, s, ) einen Typ (int, boolean, String, ) einen Wert (7, true, "Hallo", ) Richtig int i = 7; boolean b = true; String s = "Hallo"; Falsch boolean b = 7; boolean b = "Hallo"; PI-1 Konzepte benutzerdefinierter Datenstrukturen 3

Reihungen (arrays) Definition Eine Reihung besteht aus einer festen Anzahl von Elementen gleichen Typs, auf die mit einem Index zugegriffen werden kann. Beispiel Mathematische Interpretation Eine Reihung repräsentiert eine Funktion vom Indexbereich in den Wertebereich Obiges Beispiel kann also als eine Funktion f angesehen werden Anwendung Nur Funktionen durch Reihungen abbilden, die für die meisten Werte des Indexbereiches definiert sind, sonst ist der Speicherverbrauch zu hoch Der Zugriff auf Elemente einer Reihung erfolgt in konstanter Zeit, ist also unabhängig von der Anzahl der Elemente in der Reihung PI-1 Konzepte benutzerdefinierter Datenstrukturen 4

Reihungen in Java Variante 1 String[.] a = new String[50]; a[0] = "Herbert Pappelbusch"; a[1] = "Irene Schmidt"; a[2] = "Claudia Miesmuffel"; a[48] = "Tobias Kleinemann"; a[49] = "Mareike Bumtrupp"; Variante 2 String[.] a = "Herbert Pappelbusch", "Irene Schmidt", "Claudia Miesmuffel", "Tobias Kleinemann", "Mareike Bumtrupp" ; PI-1 Konzepte benutzerdefinierter Datenstrukturen 5

Zweidimensionale Reihungen Variante 1 String[.][.] a = "Herbert","Pappelbusch","Herr", "Irene","Schmidt","Frau", "Claudia","Miesmuffel,"Frau", "Tobias","Kleinemann","Herr", "Mareike","Bumtrupp","Frau" ; Variante 2 String[][] a = new String[50][3]; a[0][0] = "Herbert"; a[0][1] = "Pappelbusch"; PI-1 Konzepte benutzerdefinierter Datenstrukturen 6

Mehrdimensionale Reihungen Dimensionen Eine beliebige Anzahl von Dimensionen ist möglich Speicherplatzverbrauch bedenken! Eine zweidimensionale Reihung ist eine Reihung von Reihungen Daher können Reihungen in weiteren Dimensionen selbst auch wieder unterschiedliche Größen haben Beispiel char[.][.] a = new char[5][.]; a[0] = new char[3]; a[1] = new char[2]; a[2] = new char[4]; a[0][0] = 'A'; PI-1 Konzepte benutzerdefinierter Datenstrukturen 7

Zeichenketten (strings) Spezielle Form der Reihung Index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Zeichen 'H' 'a' 'l' 'l' 'o' ' ' 'E' 'r' 's' 't' 's' 'e' 'm' 'e' 's' 't' 'e' 'r' Gebräuchliche Schreibweise "Hallo Erstsemester" In Java Möglich, aber umständlich und nicht weiter unterstützt char[ ] c = 'H','a','l','l','o',' ','E','r','s','t','s','e','m','e','s','t','e','r'; Gebräuchlich String s = "Hallo Erstsemester"; String ist ein Verbund (eine Klasse), die eine Zeichenreihung kapselt char[ ] c = 'H','a','l','l','o',' ','E','r','s','t','s','e','m','e','s','t','e','r'; String s = new String(c); PI-1 Konzepte benutzerdefinierter Datenstrukturen 8

Verbunde (records, structs) Definition Ein Verbund besteht aus Elementen möglicherweise unterschiedlichen Typs, auf die über ihren Namen zugegriffen werden kann. Beispiel Stammdaten eines Beschäftigten (lt. Buch) Felder Name, Vorname, Anwendung Für Daten unterschiedlichen Typs oder unterschiedlicher Bedeutung, die inhaltlich zusammen gehören Der Zugriff über einen (berechneten) Index wird nicht benötigt oder ist nicht sinnvoll PI-1 Konzepte benutzerdefinierter Datenstrukturen 9

Verbunde (Klassen) in Java Beispiel class Stammdaten String name; String vorname; int gebtag; int gebmonat; int gebjahr; String familienstand; Stammdaten s = new Stammdaten(); s.name = "Mustermann"; s.vorname = "Martin"; s.gebtag = 10; PI-1 Konzepte benutzerdefinierter Datenstrukturen 10

Konstruktoren für Klassen Definition Ein Konstruktor initialisiert eine Instanz einer Klasse Beispiel class Stammdaten String name; Stammdaten(String n, String v, int t, int m, int j, String f) name = n; vorname = v; gebtag = t; gebmonat = m; gebjahr = j; familienstand = f; Stammdaten s = new Stammdaten("Mustermann", "Martin", 10, 5, 1930, "verheiratet"); PI-1 Konzepte benutzerdefinierter Datenstrukturen 11

Verbund in Verbund class Name String nachname; String vorname; class Datum int tag; int monat; int jahr; class Stammdaten Name name; Datum gebdatum; String familienstand; Stammdaten s = new Stammdaten(); s.name = new Name(); s.gebdatum = new Datum(); s.name.nachname = "Mustermann"; s.name.vorname = "Martin"; s.gebdatum.tag = 10; PI-1 Konzepte benutzerdefinierter Datenstrukturen 12

Nochmal mit Konstruktoren class Name String nachname; String vorname; Name(String n, String v) nachname = n; vorname = v; class Datum int tag; int monat; int jahr; Datum(int t, int m, int j) tag = t; monat = m; jahr = j; class Stammdaten Name name; Datum gebdatum; String familienstand; Stammdaten(Name n, Datum g, String f) name = n; gebdatum = g; familienstand = f; Stammdaten(String n, String v, int t, int m, int j, String f) name = new Name(n, v); gebdatum = new Datum(t, m, j); familienstand = f; Stammdaten s = new Stammdaten( new Name("Mustermann", "Martin"), new Datum(10, 5, 1930), "verheiratet"); PI-1 Konzepte benutzerdefinierter Datenstrukturen 13

Kombinationen aus Reihung und Verbund Verbund und Reihung können beliebig kombiniert werden Reihungen von Verbunden Reihungen in Verbunden In Java class Student Name name; int matrikel; int[] punkte = new int[12]; Student(Name n, int m) name = n; matrikel = m; Student[] semester = new Student[300]; semester[0] = new Student( new Name("Mustermann", "Martin"), 123456); semester[0].punkte[0] = 95; 0 1 11 PI-1 Konzepte benutzerdefinierter Datenstrukturen 14

Modellierung des Enthaltenseins Möglichkeiten des Enthaltenseins Per Wert (by value) Per Referenz (by reference) In Java Basisdatentypen sind immer per Wert enthalten Klassen und Reihungen sind immer per Referenz enthalten Beispiel int m = 123456; Name n = new Name("Mustermann", "Martin"); Student s1 = new Student(n, m); Student s2 = new Student(n, m); s2.matrikel = 654321; s2.name.vorname = "Markus"; m s2 s1 n 123456 654321 Markus PI-1 Konzepte benutzerdefinierter Datenstrukturen 15

Referenzen in Java Eine Referenz zeigt immer entweder auf ein Objekt eines kompatiblen Typs oder auf null Beispiel class SkatSpieler String name; SkatSpieler nächster; SkatSpieler(String n, SkatSpieler s) s3 name = n; nächster = s; name "Mary" nächster SkatSpieler s1 = new SkatSpieler("Peter", null); SkatSpieler s2 = new SkatSpieler("Paul", s1); SkatSpieler s3 = new SkatSpieler("Mary", s2); SkatSpieler s = new SkatSpieler("Mary", new SkatSpieler("Paul", new SkatSpieler("Peter", null))); PI-1 Konzepte benutzerdefinierter Datenstrukturen 16 s1 s2 name "Peter" nächster null name nächster "Paul"