Grundlagen Programmierung

Werbung
Grundlagen
Programmierung
Prof. Dr. Stephan Kleuker
Hochschule Osnabrück
Grundlagen Programmierung
Stephan Kleuker
1
Ich
• Prof. Dr. Stephan Kleuker, geboren 1967, verheiratet, 2
Kinder
• seit 1.9.09 an der HS, Professur für Software-Entwicklung
• vorher 4 Jahre FH Wiesbaden
• davor 3 Jahre an der privaten FH Nordakademie in Elmshorn
• davor 4 ½ Jahre tätig als Systemanalytiker und
Systemberater in Wilhelmshaven
• [email protected], Raum SI 0109
Grundlagen Programmierung
Stephan Kleuker
2
Verhaltenscodex
•
•
•
•
Rechner sind zu Beginn der Veranstaltung aus
Handys sind aus
Wir sind pünktlich
Es redet nur eine Person zur Zeit
• Sie haben die Folien zur Kommentierung in der Vorlesung
vorliegen, zwei Tage vor VL abends mit Aufgaben im Netz,
Aufgabenzettel liegen in der Übung vor (Ihre Aufgabe)
http://www.edvsz.hs-osnabrueck.de/skleuker/index.html
• Probleme sofort melden
• Wer aussteigt, teilt mit, warum
Grundlagen Programmierung
Stephan Kleuker
3
Studium (meine Sicht) (1/2)
• Sie haben ersten wichtigen Schritt geschafft, sich für ein
praxisnahes, qualitativ hochwertiges Studium entschieden
• Sie haben sich für einen recht schweren, sehr interessanten,
sehr abwechslungsreichen und prägenden Bildungsweg
entschieden
• Studium an der Hochschule: Konzepte, Vorgehensweisen,
weniger Visionen, mehr Zusammenhang zur Praxis
• Versuchen, frühzeitig mit der Praxis in Kontakt zu kommen
Grundlagen Programmierung
Stephan Kleuker
4
Studium (meine Sicht) (2/2)
• Die nächsten drei+x Jahre werden prägend sein, nicht so wie
die vorherigen Jahre, aber mehr als alle folgenden
• Sie werden viele Hochs und einige Tiefs erleben
• Lernen Sie, in Gruppen zu arbeiten
• Machen Sie sich nichts vor, seien aber nicht zu selbstkritisch
• Menschen verändern sich
• Versuchen sie, Ratschläge anzunehmen und zu suchen
Grundlagen Programmierung
Stephan Kleuker
5
Ablauf
• 4h Vorlesung + 4h Praktikum = 10 CP d. h. etwa 300
Arbeitsstunden
• Praktikum :
– Anwesenheit = (Übungsblatt vorliegen + Lösungsversuche
zum vorherigen Aufgabenblatt)
– Übungsblätter mit Punkten (Σ ≥ 200), individuell
bearbeitet (im Team diskutieren; jeder arbeitet selbst aus)
– Praktikumsteil mit 160 oder mehr Punkten bestanden
• Prüfung: Klausur recht kurz nach der Vorlesungszeit
• Folienveranstaltungen sind schnell, bremsen Sie mit Fragen
• von Studierenden wird hoher Anteil an Eigenarbeit erwartet
Grundlagen Programmierung
Stephan Kleuker
6
Einschub : Leistungspunkte (1/2)
• Veranstaltung hat 10 Leistungspunkte (auch 10 Credit-Points
(CP) oder 10 ECTS-Punkte genannt)
• ECTS soll Vergleichbarkeit von Leistungen in Europa
ermöglichen; einfachere Anrechnung von Veranstaltungen
• deutsche Kultusministerkonferenz (KMK) hat folgende
Vorgaben für Arbeitsbelastung von Studierenden gemacht:
"In der Regel werden pro Studienjahr 60 Leistungspunkte
vergeben, d. h. 30 pro Semester. Dabei wird für einen
Leistungspunkt eine Arbeitsbelastung der Studierenden im
Präsenz- und Selbststudium von 25 bis max. 30 Stunden
angenommen, so dass die Arbeitsbelastung im
Vollzeitstudium pro Semester in der Vorlesungs- und
vorlesungsfreien Zeit insgesamt 750 bis 900 Stunden beträgt"
Grundlagen Programmierung
Stephan Kleuker
7
Einschub : Leistungspunkte (2/2)
• Grundlagen Programmierung hat 10 CP, d. h. ungefähr 300
Arbeitsstunden für qualifizierten Studierenden
• abhängig von Fähigkeit können 10 CP dann 150 Stunden
oder beliebig viele Stunden bedeuten
• guter Ansatz:
– 14 Wochen Kernvorlesungszeit, jede Woche 15 h = 210 h
– Klausurvorbereitung und Durchführung 40 h
– Nacharbeit, eigene Studien 50 h
• nicht gleichmäßig verteilt, erhöhter Aufwand bis zu den
Klausuren, dann etwas weniger (aber Hausarbeiten
beachten)
Grundlagen Programmierung
Stephan Kleuker
8
Vorlesung
• Interaktiver Unterricht
• vorbereite Folien und Beispielvorführungen am Rechner
• Sie können, sollen und müssen Fragen stellen und Fragen
beantworten
• Vorlesungsteilnahme ist freiwillig; hilft auch, Lernen zu
strukturieren
• falls man nicht zur Vorlesung kommt:
– unbedingt Folien nacharbeiten und Fragen im Praktikum
oder am Anfang der nächsten Vorlesung stellen
– Folien reichen nicht! Vertiefende Literatur parallel lesen
(soll das ersetzen, was Dozent zu den Folien erzählt)
• in Praktika wird Kenntnis der Vorlesungsstoffs erwartet
(natürlich sind konkrete Nachfragen erlaubt/ gewünscht!)
Grundlagen Programmierung
Stephan Kleuker
9
Praktikum
• vorgegebene Aufgaben in einem vorgegebenen Zeitraum
bearbeiten
• Aufgaben bereiten Vorlesungsstoff nach, vertiefen ihn,
ergänzen ihn und fordern selbstständige Einarbeitung
• im Praktikum werden neue Aufgaben vorgestellt
• im Praktikum werden Lösungen der Aufgaben
abgenommen (oder Verbesserungen gefordert)
• im Praktikum sind immer zwei betreuende Personen
anwesend, die man befragen kann
• im Praktikum herrscht Anwesenheits- und Aktivitätspflicht
(Bearbeitung der Aufgaben, daddeln im Netz ist keine
Anwesenheit)
• Gesamtaufwand für Praktikumsaufgaben für
durchschnittlich guten Studierende: 8+x h pro Woche !!
Grundlagen Programmierung
Stephan Kleuker
10
Praktikumsorganisation
• Anmeldung über Stud.IP für Vorlesung und die Praktika (nur
Vorlesungsordner relevant)
• Stud.IP ist Hauptquelle, Infos auch
unter:
http://home.edvsz.hsosnabrueck.de/skleuker/SS12_GP/index.html
• Aufgabenblätter online bis Freitag
KW x
• Vorstellung und betreute
Bearbeitung in KW x+1
• Abnahme im ersten Praktikum KW
x+2 (zweites Praktikum für
restliche Abnahmen und
geforderte Nacharbeiten)
Grundlagen Programmierung
Stephan Kleuker
11
Hardware / Software
Software
• Java SE in der Version 6
(http://www.oracle.com/technetwork/java/javase/downloa
ds/jdk-6u27-download-440405.html)
• Entwicklungsumgebung BlueJ 3.0.7
(http://www.bluej.org/download/download.html)
• Programm für Screenshots, z. B. FastStone Capture 5.3
Hardware
• im EDVSZ stehen Rechner zur Verfügung, im Praktikum
"virtuelle Rechner", großer Vorteil; Rechner immer mit
Internet-Verbindung nutzbar (https://sgd-02.edvsz.hsosnabrueck.de/)
• es dürfen eigene Rechner genutzt werden
Grundlagen Programmierung
Stephan Kleuker
12
Klausur
• ausgewählte vergleichbare Aufgaben in Praktika behandelt
• Orientierung an Beispielklausur möglich
• selbständiges Erklären von Fachbegriffen
• was passiert in gegebenen Programmfragmenten
• programmieren auf dem Papier
Grundlagen Programmierung
Stephan Kleuker
13
Voraussetzungen
• außer Hochschulreife, keine
beinhaltet
• Fähigkeit, selbständig den Lernprozess zu organisieren
• Fähigkeit zur Gruppenarbeit
• Fähigkeit, Zeiten von konzentrierten Arbeiten und freier
Zeitgestaltung zu trennen und zu koordinieren
• Fähigkeit zur kritischen Selbstreflexion zum erreichten
Lernstand
• Kopieren ist nicht Kapieren
• Vorlesungen und Praktika als Lernunterstützung zu sehen
(Sie sind für Lernerfolg allein verantwortlich)
• Umgang mit Windows-PC
Grundlagen Programmierung
Stephan Kleuker
14
Ziele
• Konzepte der objektorientierten Programmierung verstehen
und selbstständig nutzen
• Eigenständig einfache OO-Programme entwickeln, Fehler
beseitigen und längerfristig wartbar machen
• Erlernen eines systematischen inkrementellen Prozesses zur
Entwicklung größerer Programme
• Erlernen und Anwenden der Fachbegriffe rund um die
Programmierung
• Verständnis für die grundsätzlichen Schritte vom
Programmcode zur Ausführung auf dem Rechner
Grundlagen Programmierung
Stephan Kleuker
15
Literatur
• Vorlesung orientiert sich nicht genau an einem Buch
sicherlich sehr hilfreich:
• David J. Barnes , Michael Kölling, Java lernen mit BlueJ: Eine
Einführung in die objektorientierte Programmierung, 4.
Auflage, Pearson Studium, 2009
ab Mitte des Semesters hilfreich:
• Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll, Java als erste
Programmiersprache, 6. Auflage, Vieweg+Teubner, 2011
• Sven Eric Panitz, Java will nur spielen, 2. Auflage, Vieweg+Teubner, 2011
• Christian Ullenboom, Java ist auch eine Insel, 9. Auflage, Galileo
Computing, 2011 (auch: http://openbook.galileocomputing.de/javainsel/)
• Guido Krüger, Thomas Stark, Handbuch der Java-Programmierung, 6.
Auflage, Addison-Wesley, 2009 (5. Auflage auch unter
http://www.javabuch.de/download.html)
• Dietmar Abts, Grundkurs JAVA: Von den Grundlagen bis zu Datenbank
und Netzanwendungen, Vieweg+Teubner, 2010
Grundlagen Programmierung
Stephan Kleuker
16
Objects First
• Die Vorlesung folgt dem Ansatz, dass man Klassen und
Objekte als Basis der objektorientierten Programmierung
zuerst lernen sollte
• Viele veraltete Ansätze erklären erst Ablaufstrukturen (; if
while for) und dann Objekte
• Mit beiden Ansätzen kann man Programmieren lernen, aber
– mit dem zweiten Ansatz lernen es weniger auf Anhieb
– die, die es mit dem zweiten Ansatz lernen, werden
häufiger zu schlechten objektorientierten Entwicklern
• Aber auch neue Bücher nutzen den Ansatz nicht
– Es hat auch gedauert bis sich "Die Erde ist rund"
durchgesetzt hat; ohne den Ansatz macht die meiste
Astronomie wenig Sinn
Grundlagen Programmierung
Stephan Kleuker
17
Programmiersprache
• Programmiersprache ist Hilfsmittel beim programmieren
lernen
• hier kein Java-Kurs, sondern Programmierkurs mit Java
• keine auch nur annähernd vollständige Einführung in Java
(für Expertise wichtige Programmkonstrukte fehlen)
• Konzept:
– erstes Semester grundlegende Ideen
– zweites Semester, weitere Ideen mit neuen
Programmiersprachen (C und C++)
• Ziel: ab Ende des zweiten Semesters grundsätzlich in der
Lage sich in fehlende Sprachkonstrukte und andere ähnlich
strukturierte Programmiersprachen einzuarbeiten (5. + 6.
Semester: Projekte und Bachelor-Arbeiten auch in C#)
Grundlagen Programmierung
Stephan Kleuker
18
Hintergrund von Programmiersprachen (Ausschnitt)
Sprache
Fortran
Cobol
Smalltalk
C
seit
basiert auf
1954
1959
1972 Simula
1972 Algol
Anwendungsgebiet
math. Berechnungen
Banken, Versicherungen
Einführung Objektorientierung
Betriebssysteme, HW-nahe
Programmierung
Objective C 1981 C, Smalltalk jetzt: Apple-Apps
C++
1983 C
C mit OO, Graphik,
Bildverarbeitung, …
PHP
1995 C, Pascal,
einfache kleine Webgehacke
Applikationen
Java
1995 Smalltalk,
große sklalierbare WebC++
Applikationen (ERP),
Standardprogramme
C#
2001 Java, C
Java von Microsoft
Grundlagen Programmierung
Stephan Kleuker
19
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Position
Feb 2012
1
2
3
4
5
6
7
8
9
10
Position
Feb 2011
1
2
6
3
8
5
7
4
10
9
Grundlagen Programmierung
Programming
Language
Java
C
C#
C++
Objective-C
PHP
(Visual) Basic
Python
Perl
JavaScript
Stephan Kleuker
Ratings
Feb 2012
17.050%
16.523%
8.653%
7.853%
7.062%
5.641%
4.315%
3.148%
2.931%
2.465%
Delta
Feb 2011
-1.43%
+1.54%
+1.84%
-0.33%
+4.49%
-1.33%
-0.61%
-3.89%
+1.02%
-0.09%
20
Inhalt (Planung) (1/2)
Programmierung
Objekt
Klasse
Klassen in Java
Konstruktor
Objektmethoden
Debugger
Objektweitergabe
Alternative
equals
Strings
Schleife
switch
Schleife 2
Algorithmus
geschachtelte Schleifen
Grundlagen Programmierung
Iterator
for
Unit Test
iterativ inkrementelle
Entwicklung
Vererbung
Überschreiben
dynamische Polymorphie
casten
abstrakte Klasse
Interface
Kommentare
Mehrfachvererbung
Klasse Object
Collection Framework
Array
Stephan Kleuker
21
Inhalt (Planung) (2/2)
Exception
Klassenvariablen und Klassenmethoden
Start von Java-Programmen
Entwicklungsumgebungen
Pakete
Einige Realitätsbeichten
Programmieren ohne echte Klassen
Laden und Speichern
Aufzählungen
Frames, Knöpfe und Ereignisbehandlung
Layout, hierarchischer GUI-Aufbau
Rundflug über GUI-Bausteine
Grundlagen Programmierung
Stephan Kleuker
22
Programmierung
Grundlagen Programmierung
Stephan Kleuker
23
Worum geht es bei der Programmierung
• Menschen haben Maschinen erfunden, um sich das Leben
leichter zu machen und Geld zu verdienen
• Computer wurden entwickelt als flexible Maschinen, die
Rechenaufgaben lösen und andere Maschinen steuern
können
• Computer sind dumm, ihnen muss beigebracht werden, was
sie wann zu tun haben
• Dieses „was wann“ heißt Computer-Programm
• Computer-Programme müssen entwickelt werden, dies ist
ein Ziel dieser Veranstaltung
• Zentral für die Programmierung ist das Vorgehen zur
Entwicklung einer Lösung, eines Algorithmus
Grundlagen Programmierung
Stephan Kleuker
24
Worum geht es in Programmen
• Es werden Informationen verwaltet, d. h. angelegt, gesucht
und gelesen, verändert und gelöscht
• Es werden neue Ergebnisse berechnet, indem vorhandene
Informationen genutzt werden
• Beispiel: Studierende in einer Studierendenverwaltung,
Prognose der Studienbeiträge der nächsten Semester
• Informationen müssen in das System, z. B. Studierende in den
Rechner
• gesucht ist ein Modell der Realität, so dass gewünschte
Berechnungen möglich werden
• man kann relevante Daten des Studierenden-Modells
festlegen (Vorname, Nachname, Geburtstag, Studiengang, …)
• man kann Hilfsdaten einführen: Matrikelnummer
Grundlagen Programmierung
Stephan Kleuker
25
Wie finde ich die Programmieraufgabe
Anforderungsanalyse
• systematische Analyse der Kundenherausforderungen
• Strukturierung der gewünschten Funktionalität in
Hauptaufgaben
• Klärung der relevanten Informationen zur Modellierung
• Klärung vieler Randbedingungen
• genauer: siehe Vorlesung Objektorientierte Analyse und
Design
• für diese Veranstaltung werden die Aufgabenstellungen als
klar gegeben angenommen (große Vereinfachung)
Grundlagen Programmierung
Stephan Kleuker
26
Wie fange ich die Programmierung an
• zunächst klären, ob Aufgabenstellung verstanden
• dann Entwicklungsplanung; typisch inkrementell
– Aufteilung in Teilaufgaben
– Für jede Teilaufgabe das erwünschte typische Verhalten
realisieren (z. B. Daten eines neuen Studierenden
eintragen und speichern)
– Über alle möglichen Alternativen beim Verhalten
nachdenken und diese schrittweise einbauen (z. B.
Abbruch der Dateneintragung, Fehler beim Speichern)
• Grundlage ist dabei ein Modell der gewünschten Daten, die
für die Teilaufgabe benötigt werden
• Bei Datenmodellen spricht man oft von Objekten
(Individuen mit konkreten Eigenschaften)
Grundlagen Programmierung
Stephan Kleuker
27
Objekt
Grundlagen Programmierung
Stephan Kleuker
28
Was heißt Objektorientierung
• in Programmen werden Daten verarbeitet und neue
berechnet
• Daten gehören zu Objekten
• Objekte sind damit eine Grundstruktur von Programmen
Objekt:
• eindeutig einzeln identifizierbar
• besitzt konkrete Eigenschaften, die es charakterisieren
• !!! Objekte können die gleichen Eigenschaften haben und
trotzdem unterschiedlich sein (dasselbe oder das Gleiche,
Sie besuchen dieselbe Veranstaltung, Sie sitzen auf gleichen
Stühlen)
Grundlagen Programmierung
Stephan Kleuker
29
Objekt in der realen Welt
• Ball: Farbe, Größe, Material
• Computer: Form, Prozessor, Graphikkarte, Festplatte,
Hersteller, Seriennummer
• Mensch: Name, Geburtsort, Geburtsdatum, Wohnort,
Personalausweisnummer
• Konto: Inhabername, Inhaberwohnort, Betrag, Kontoart,
Bankleitzahl, Kontonummer
• Informatik nutzt Modelle der realen Welt; ein InformatikObjekt beinhaltet für Aufgabenstellung relevante Daten
Grundlagen Programmierung
Stephan Kleuker
30
Objekt Adresse
• jedes Haus hat eine eindeutige Adresse
Eigenschaften:
zwei Beispielobjekte:
• Straße
Barbarastr.
• Hausnummer
16
• Postleitzahl
49076
• Stadt
Osnabrück
• Bundesland
Niedersachsen
Barbarastr.
16
79106
Freiburg
Baden-Württemberg
• es kann optionale Eigenschaften geben, bzw. Eigenschaften,
die nur im bestimmten Kontext interessieren
• (Stockwerk)
• (Grundstücksgröße)
Grundlagen Programmierung
Stephan Kleuker
31
Objekt Datum
•
•
•
•
•
Identifiziert einen eindeutigen Tag
Eigenschaften:
zwei Beispielobjekte:
Tag
31
29
Monat
12
2
Jahr
1999
2100
• Man spürt den Wunsch, die Gültigkeit von Objekten zu
prüfen (-> später)
Grundlagen Programmierung
Stephan Kleuker
32
Objekt Person
• jede(r) ein Individuum
Eigenschaften:
zwei Beispielobjekte:
• Vorname
Stephan
• Nachname
Dr. Kleuker
• Geburtsort
Wilhelmshaven
• Geburtsland
Deutschland
• Adresse
Grundlagen Programmierung
Stephan Kleuker
Eva
Mustermann
Wladiwostok
Russland
33
Objekt Student
• jede(r) ein Individuum
Eigenschaften:
zwei Beispielobjekte:
• Vorname
Stephan
• Nachname
Kleuker
• Geburtsort
Wilhelmshaven
• Geburtsland
Deutschland
• Adresse
…
• eingeschrieben am 14.9.1986
• Studiengang
Informatik
• Matrikelnummer 368849
Grundlagen Programmierung
Stephan Kleuker
Eva
Mustermann
Wladiwostok
Russland
…
29.7.2011
Informatik
424142
34
Objekt Praktikum
• individuell durch seine Eigenschaften
Eigenschaften:
Beispielobjekt:
• Modul
Grundlagen Programmierung
• Semester
Sommersemester 2012
• Veranstalter
Stephan Kleuker
• Mitarbeiter
Stefan Altevogt
• Termine
[Mo 6:30-8:00, Fr 18:30-20:00]
• Teilnehmer
[Eva Mustermann (424142), Kevin Meier
(424345), Jaqueline Schmidt (422323)]
• man erkennt, dass Eigenschaften mehrwertig sein können
Grundlagen Programmierung
Stephan Kleuker
35
Erkenntnisse über Objekte
• können große Anzahl von Eigenschaften haben
• relevante Eigenschaften hängen vom Anwendungsbereich
ab (Erkennung durch Haarfarbe für Studierende irrelevant)
• Eigenschaften können optional sein
• Eigenschaften können wieder selbst Objekte sein
• kann unterschiedliche Objektarten mit vielen
Gemeinsamkeiten geben
• Eigenschaft kann eine Sammlung von Werten sein, die leer
sein kann
Person
Student
Praktikum
Grundlagen Programmierung
Adresse
Stephan Kleuker
36
Herunterladen