Grundlagen Programmierung -...

36
Stephan Kleuker 1 Grundlagen Programmierung Grundlagen Programmierung Prof. Dr. Stephan Kleuker Hochschule Osnabrück

Transcript of Grundlagen Programmierung -...

Stephan Kleuker 1Grundlagen Programmierung

Grundlagen

Programmierung

Prof. Dr. Stephan Kleuker

Hochschule Osnabrück

Stephan Kleuker 2

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 3

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 4Grundlagen Programmierung

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

Stephan Kleuker 5Grundlagen Programmierung

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

Stephan Kleuker 6

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 7

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 8

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 9

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 10

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 11

Praktikumsorganisation

• Anmeldung über Stud.IP für Vorlesung und die Praktika (nur Vorlesungsordner relevant)

Grundlagen Programmierung

• Stud.IP ist Hauptquelle, Infos auch unter:

http://home.edvsz.hs-

osnabrueck.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)

Stephan Kleuker 12

Hardware / Software

Software

• Java SE in der Version 6 (http://www.oracle.com/technetwork/java/javase/downloads/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.hs-osnabrueck.de/)

• es dürfen eigene Rechner genutzt werden

Grundlagen Programmierung

Stephan Kleuker 13

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 14

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 15

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 16

Literatur

• Vorlesung orientiert sich nicht genau an einem Buchsicherlich 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 17

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 (; ifwhile 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 18

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 19

Hintergrund von Programmiersprachen (Ausschnitt)

Grundlagen Programmierung

Sprache seit basiert auf Anwendungsgebiet

Fortran 1954 math. Berechnungen

Cobol 1959 Banken, Versicherungen

Smalltalk 1972 Simula Einführung Objektorientierung

C 1972 Algol Betriebssysteme, HW-naheProgrammierung

Objective C 1981 C, Smalltalk jetzt: Apple-Apps

C++ 1983 C C mit OO, Graphik,Bildverarbeitung, …

PHP 1995 C, Pascal, gehacke

einfache kleine Web-Applikationen

Java 1995 Smalltalk, C++

große sklalierbare Web-Applikationen (ERP), Standardprogramme

C# 2001 Java, C Java von Microsoft

Stephan Kleuker 20

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

PositionFeb 2012

PositionFeb 2011

ProgrammingLanguage

RatingsFeb 2012

Delta Feb 2011

1 1 Java 17.050% -1.43%

2 2 C 16.523% +1.54%

3 6 C# 8.653% +1.84%

4 3 C++ 7.853% -0.33%

5 8 Objective-C 7.062% +4.49%

6 5 PHP 5.641% -1.33%

7 7 (Visual) Basic 4.315% -0.61%

8 4 Python 3.148% -3.89%

9 10 Perl 2.931% +1.02%

10 9 JavaScript 2.465% -0.09%

Grundlagen Programmierung

Stephan Kleuker 21

Inhalt (Planung) (1/2)

Grundlagen Programmierung

ProgrammierungObjektKlasseKlassen in JavaKonstruktorObjektmethodenDebuggerObjektweitergabeAlternativeequalsStringsSchleifeswitchSchleife 2Algorithmusgeschachtelte Schleifen

IteratorforUnit Testiterativ inkrementelle EntwicklungVererbungÜberschreibendynamische Polymorphiecastenabstrakte KlasseInterfaceKommentareMehrfachvererbungKlasse ObjectCollection FrameworkArray

Stephan Kleuker 22

Inhalt (Planung) (2/2)

Grundlagen Programmierung

ExceptionKlassenvariablen und KlassenmethodenStart von Java-ProgrammenEntwicklungsumgebungenPaketeEinige RealitätsbeichtenProgrammieren ohne echte KlassenLaden und SpeichernAufzählungenFrames, Knöpfe und EreignisbehandlungLayout, hierarchischer GUI-AufbauRundflug über GUI-Bausteine

Stephan Kleuker 23

Programmierung

Grundlagen Programmierung

Stephan Kleuker 24Grundlagen Programmierung

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

Stephan Kleuker 25

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 26

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 27

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 28

Objekt

Grundlagen Programmierung

Stephan Kleuker 29

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 30

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 Informatik-Objekt beinhaltet für Aufgabenstellung relevante Daten

Grundlagen Programmierung

Stephan Kleuker 31

Objekt Adresse

• jedes Haus hat eine eindeutige Adresse

Eigenschaften: zwei Beispielobjekte:

• Straße Barbarastr. Barbarastr.

• Hausnummer 16 16

• Postleitzahl 49076 79106

• Stadt Osnabrück Freiburg

• Bundesland Niedersachsen Baden-Württemberg

• es kann optionale Eigenschaften geben, bzw. Eigenschaften, die nur im bestimmten Kontext interessieren

• (Stockwerk)

• (Grundstücksgröße)

Grundlagen Programmierung

Stephan Kleuker 32

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 33

Objekt Person

• jede(r) ein Individuum

Eigenschaften: zwei Beispielobjekte:

• Vorname Stephan Eva

• Nachname Dr. Kleuker Mustermann

• Geburtsort Wilhelmshaven Wladiwostok

• Geburtsland Deutschland Russland

• Adresse

Grundlagen Programmierung

Stephan Kleuker 34

Objekt Student

• jede(r) ein Individuum

Eigenschaften: zwei Beispielobjekte:

• Vorname Stephan Eva

• Nachname Kleuker Mustermann

• Geburtsort Wilhelmshaven Wladiwostok

• Geburtsland Deutschland Russland

• Adresse … …

• eingeschrieben am 14.9.1986 29.7.2011

• Studiengang Informatik Informatik

• Matrikelnummer 368849 424142

Grundlagen Programmierung

Stephan Kleuker 35

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 36

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

Grundlagen Programmierung

PraktikumAdresse

PersonStudent