-
Notifications
You must be signed in to change notification settings - Fork 53
Sommer Sitzung 01
Fabian Steeg edited this page Jun 20, 2011
·
1 revision
Thema | Stichworte | Material |
Rückblick | — | — |
1. Gesamtüberblick und Ziel | Worum geht es? Softwaretechnologie, SW-Entwicklung, alles Programmieren, auf vielen Ebenen – Was ist Programmieren? Klassische Definition: [Algorithmen (Rezept, Idee), Datenstrukturen (Material, Zutaten)] (Abb.), die kann man mit den Sachen aus dem ersten Semester umsetzen; Thema sind die Grundlagen des Programmierens allgemein, Java als Sprache ist Detail und nicht eigentlich der Mittelpunkt | |
2. Grundlagen des Programmierens | Literale; Datentypen (und die Alternative: dynamisch typisierte Sprachen, d.h. nicht typsicher); Array, Matrix; Variablen; Werte; Kontrollstrukturen; Scope; Methoden: [Spektrum mit zwei Enden; Prozeduren: mach was; Funktionen: ergibt was] (Abb.); Parameter; Rückgabewerte; Assignment (Alternative grundsätzlich: reine Funktionen kombinieren) | |
3. Grundlagen der OOP | Klassen; Objekte; Instanzen;Konstruktoren; Statics; Arten von Variablen: lokal, Attribute, Konstanten; Sichtbarkeit: [public, protected, package private (Java-Default), private]; Packages; Vererbung: [Implementationsvererbung (Java: extends), Interface-Vererbung (Java: implements)] (Abb.); abstrakte Klassen; Komposition, Aggregation, Delegation; Vor- und Nachteile Implementationsvererbung (Polymorphie und Code-Reuse, aber verletzt Kapselung), Interface-Vererbung (Polymorphie, aber keine Code-Reuse), Komposition (Code-Reuse, aber allein keine Polymorphie); Fehlerbehandlung; IO: [Streams (Binärdaten), Reader und Writer (Text)] | |
Besprechung Hausarbeit | — | — |
1. Thema | Game of Life: vorgegebene Teile, selbst zu machen waren im Wesentlichen: Berechnung der nächsten Generation in Abhängigkeit von den Nachbarn jedes Lebewesens in 2-dimensionaler Welt einer bestimmten Konfiguration (Schleifen, Arrays); Textdateien lesen und schreiben (IO, Strings) | — |
2. Berechnung einer Generation | Jede Folgegeneration: für jedes Wesen berechnen ob es weiterlebt (nicht zu viel, nicht zu wenig Nachbarn), stirbt (zu wenig oder zu viel Nachbarn), oder wiedergeboren wird (bestimmte Anzahl von Nachbarn), d.h. geschachtelte Schleifen und Boolsche Arithmetik | |
3. Berechnung der Nachbarn | Grundsätzlich: Ausschnitt mit Nachbarn durchlaufen wie Gesamtmatrix; Beachten: Was ist am Rand – Lösung z.B.: min und max für Anfang und Ende der Schleifen; Alternativen: alles einzeln checken, ohne Schleife; Rand hinzufügen; Exception fangen (Exception als Kontrollstruktur, bedenklich) | |
4. IO | Lesen (Scanner), Schreiben (Writer), Stringverarbeitung | Integer.parseInt(line.split(":")[1].trim()) |
Ausblick | — | — |
1. Insgesamt | Grundlegende Algorithmen und Datenstrukturen; Idee: Sachen, die man beim Programmieren immer verwendet, selbst implementieren; Sinn: Verstehen, dass Grundlagen selbst umsetzbar sind (z.B. in einer Sprache in der es die noch nicht gibt); Grund: Fokus nicht Java, sondern die Konzepte | — |
2. Technisch | Listen, Bäume, Rekursion, Hashing und Direktzugriff, Regex, Dynamic Programming, Concurrency | — |
3. Fachlich | Suchen, Sortieren, Tokenisieren, Indexieren, Weiches Matching, Crawling | — |