Skip to content
Fabian Steeg edited this page Jun 20, 2011 · 1 revision

Softwaretechnologie: Java (Teil II, Sommersemester), Notizen zu Sitzung 1

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