In diesem Teil der Abschlussprüfung geht es um die Umsetzung eines Software-Projektes. Zumindest in der Theorie und auf Papier😉 Häufiger Bestandteil dieser Prüfung sind die UML-Diagramme. Aber auch SQL und das entwerfen eines Relationalen-Datenbank-Schemas.
Das ist eine für den Ausdruck optimierte Ansicht des gesamten Kapitels inkl. Unterseiten. Druckvorgang starten.
GA2 - Umsetzung eines Softwareprojektes
- 1: UML ~ Zustandsdiagramm
- 2: UML ~ Aktivitätsdiagramm
- 3: UML ~ Use-Case-Diagramm
- 4: UML ~ Sequenzdiagramm
- 5: UML ~ Klassendiagramm
- 6: MVC - Pattern
- 7: Observer - Pattern
- 8: Objektorientierung
- 9: SQL / MySQL
- 10: Normalisierung
- 11: ER-Modell
1 - UML ~ Zustandsdiagramm
Erklärungsvideo Zustandsdiagramm 📹
2 - UML ~ Aktivitätsdiagramm
- Auch Flussdiagramm genannt
Elements
| Name | Darstellung |
|---|---|
| Start | |
| End | |
| Activity | |
| Condition |
Erklärungsvideos Aktivitätsdiagramm 📹
Basics
Swimlanes und Nebenläufigkeit
Links 🔗
3 - UML ~ Use-Case-Diagramm
- Alternative Namen: Anwendungsdiagramm / Anwendungsfalldiagramm
- Keine Abläufe
- Funktionalität der Software aus einer Sicht des Anwenders
- Unabhängig von technischer Realisierung
- Komplexes System einfach darstellen => Hohes Abstraktionsniveau
Vorgehen beim Erstellen
- Ermittle die Akteure
- Ermittle die Standard Use-Cases
- Ermittle Sonderfall-Use-Cases
- Komplexe Use-Cases aufteilen
Assoziation
Include-Beziehung
Durch die Include Beziehung kann ein Use-Case einen anderen Use-Case importieren. Besser gesagt der Use-Case importiert das Verhalten des anderen Use-Cases.
⚠️ Verhalten wird immer importiert ⚠️
Vererbung
Bei der Vererbung werden die Eigenschaften eines Use-Cases oder eines Akteurs an ein weiteres Element übergeben / vererbt.
Extend-Beziehung
- Optionale Erweiterung eines Use-Cases
- Abhängig von einer Bedingung
Erklärungsvideo Use-Case-Diagramm 📹
4 - UML ~ Sequenzdiagramm
Erklärungsvideo Sequenzdiagramm 📹
5 - UML ~ Klassendiagramm
Zugriffsmodifikatoren
| Zeichen | Sichtbarkeit |
|---|---|
| + | Public |
| - | Private |
| # | Protected |
| ~ | Package |
Vererbung
Assoziation
Komposition
- Noch stärkere Bindung als Aggregation
- Eine Teil-Klasse kann nicht ohne eine andere Klasse existieren
Aggregation
- Klassen besitzen starke Beziehung
- Existenzen der einzelnen Klassen ist nicht aneinander gebunden
- Zeigt eine “Art” Besitz an
Multiplizitäten
| Multiplizität | Alternative Schreibweise | Beschreibung |
|---|---|---|
| 0…1 | Keiner oder Einer | |
| 1 | Genau Einer | |
| 0…* | * | Null oder beliebig viele |
| 1…* | Beliebig viele - Mindestens 1 |
Erklärungsvideo Klassendiagramm 📹
6 - MVC - Pattern
Komponenten
Außer das Aufteilen einer App in die folgenden Komponenten definiert dies Pattern auch die Kommunikation zwischen den einzelnen Teilen.
- Modell: Verantwortlich für das Management der Daten der App. Bekommt den User-Input vom Controller.
- View: Rendert die Präsentation der Anwendung in welcher Form das auch immer sein muss
- Controller: Reagiert auf den Input von Usern und interagiert mit dem Modell. Er empfängt Input validiert ihn gegebenenfalls und gibt ihn dann an das Modell weiter.
Modell
Das Modell ist die Zentrale Komponente des Patterns. Es ist die unter Umständen dynamische Datenstruktur der App. Es ist unabhängig vom User-Interface.
View 🌄
Die View beinhaltet alle möglichen Arten der Präsentation der Daten. Es sind auch mehrere Views für die selben Daten möglich. Dies kann nützlich sein wenn eine Information für verschiedene Personengruppen dargestellt werden soll.
Zum Beispiel: Diagramme, Tabellen
Controller 🎮
Der Controller verarbeitet Input und wendet diesen anhand von Befehlen an Model oder View an.
Links
7 - Observer - Pattern
Links 🔗
8 - Objektorientierung
⚠️Achtung⚠️ nicht alle Programmiersprachen weisen dieses Paradigma auf! (Zum Beispiel: Funktionale Programmiersprachen)
Unterschied zwischen Objekt / Instanz und Klasse 📘
Klasse 📘
Eine Klasse ist ein Bauplan. In diesem Bauplan werden Methoden, Funktionen und Attribute festgelegt.
Objekt / Instanz 🚗
Ein Objekt wird aus einer Klasse erschaffen quasi nach dem Bauplan gebaut. Dies ist in der Objektorientierung der Baustein der Daten und Funktionalitäten dann tatsächlich auch ausführt bzw. trägt.
Kapselung 💊
Die in den Objekten enthaltenen Methoden, Funktionen und Attribute werden gekapselt. So wird der Zugriff auf diese eingeschränkt. Dies passiert durch sogenannte Zugriffsbeschränkungen (public, private). So kann sichergestellt werden, dass das Objekt immer in einem korrekten Zustand ist. Außerdem werden so ungewollte Fehler vermieden. Der interne Code wird quasi abgeschottet und der Zugriff darauf erfolgt nur über darauf ausgelegte Schnittstellen.
Beispiel
public class Pen
{
private bool _canStillWrite;
public bool GetCanStillWrite() // Public: Alle dürfen den Wert von "_canStillWrite" abfragen
{
return _canStillWrite;
}
private void SetCanStillWrite(bool value) // Privat: Nur innerhalb dieser Klasse darf der Wert gesetzt werden
{
_canStillWrite = value;
}
}
Vererbung 🔗
Bei der Vererbung können Attribute und Methoden zwischen Klassen hierarchisch ausgetauscht und ergänzt werden. Das bedeutet wenn eine Klasse von einer Basisklasse erbt dann übernimmt die Klasse alle Attribute sowie Methoden der Basisklasse. Sie hat diese geerbt. Die erbende Klasse kann auch Subklasse genannt werden.
Polymorphie
Die Eigenschaften der Polymorphie treten in Zusammenhang mit Vererbung und Interfaces auf. Polymorphie ist wenn einer Variable unterschiedliche Typen zugewiesen werden können und dann je nach Typ eine andere Implementierung aufgerufen wird.
Beispiel
public class Shape
{
// A few example members
public int X { get; private set; }
public int Y { get; private set; }
public int Height { get; set; }
public int Width { get; set; }
// Virtual method
public virtual void Draw()
{
Console.WriteLine("Performing base class drawing tasks");
}
}
public class Circle : Shape
{
public override void Draw()
{
// Code to draw a circle...
Console.WriteLine("Drawing a circle");
base.Draw();
}
}
public class Rectangle : Shape
{
public override void Draw()
{
// Code to draw a rectangle...
Console.WriteLine("Drawing a rectangle");
base.Draw();
}
}
public class Triangle : Shape
{
public override void Draw()
{
// Code to draw a triangle...
Console.WriteLine("Drawing a triangle");
base.Draw();
}
}
Links 🔗
Wikipedia
Häufige Fragen im Fachgespräch zu Objektorientierung
9 - SQL / MySQL
In diesem Fall wird der SQL-Dialekt MySQL beschrieben.
SQL ist eine sehr beliebte Aufgabe in der alten Prüfungsverordnung gewesen. Für die Prüfung ist dieses Wissen ein muss.
In der Prüfung ist bei SQL eine Cheatsheet beigelegt. Es lohnt sich diese anzuschauen und fehlende Syntax auswendig zu lernen.
Datentypen
| Typ | Beschreibung |
|---|---|
| INT, INTEGER | Ganze Zahlen, 32 Bit, -2 Mrd. bis +2 Mrd. |
| SMALLINT | Ganze Zahlen, 16 Bit, -32768 bis 32767 |
| BIGINT | 64 Bit, -263 bis 263-1 (falls vorhanden) |
| DECIMAL(p,s) | Festkommatyp (p Dezimalstellen insgesamt, s Dezimalstellen hinter dem Komma) |
| FLOAT | Gleitkommatyp, 32 Bit |
| DOUBLE | Gleitkommatyp, 64 Bit |
| BOOLEAN | False, True (0 oder 1) |
| BLOB, (LONG BLOB, MEDIUM BLOB) | Binary large object, Für binäre Dateien (z.B. Bilder) |
| DATE | Datum (mögliche Schreibweise: YYYY-MM-DD, z.B.: 2021-12-31) |
| DATETIME | Datum + Uhrzeit |
| TIMESTAMP | Datum + Uhrzeit (Milli-Sekunden seit 1.1.1970 00:00 Uhr |
| CHAR(s) | Zeichenfolge mit Länge s, wird ggf. mit Leerzeichen aufgefüllt |
| VARCHAR(s) | Zeichenfolge mit Maximal-Länge s, ggf. auch kürzer |
| TEXT | Sehr große Texte |
Datenbanken verwalten
Datenbank anlegen
CREATE DATABASE [IF NOT EXISTS] <Datenbankname>;
Datenbank auswählen
USE <Datenbankname>;
Datenbanken auflisten
SHOW DATABASES;
Datenbank löschen
DROP DATABASE <Datenbankname>;
Tabellen verwalten
Tabellen auflisten
SHOW TABLES;
Tabellenaufbau anzeigen
DESC <Tabellenname>;
Tabelle anlegen
CREATE TABLE <Tabellenname> (<Attributdefinition1>, <Attributdefinition2>, ...);
Attributdefinition
<Attributname> <Datentyp> [PRIMARY KEY] [AUTO_INCREMENT] [NOT NULL] [DEFAULT <Wert>];
| Option | Beschreibung |
|---|---|
| NOT NULL | Pflichtfeld, Wert darf nicht NULL sein |
| PRIMARY KEY | Feld ist der Primärschlüssel |
| AUTO_INCREMENT | Zahlenfelder werden automatisch erhöht |
| DEFAULT | Der Standartwert für dieses Feld wird auf “Wert” gesetzt. |
Tabelle löschen
DROP TABLE <Tabellenname>;
Bestehende Tabellen ändern
Spalte hinzufügen
ALTER TABLE <Tabellenname> ADD <Attributdefinition>;
Spalte löschen
ALTER TABLE <Tabellenname> DROP <Attributname>;
Spalte ändern
ALTER TABLE <Tabellenname> MODIFY <Attributdefinition>;
Daten bearbeiten
Daten einfügen
INSERT INTO <Tabellenname> (Attributliste) VALUES (Wertliste);
Daten löschen
DELETE FROM <Tabellenname>;
Daten aktualisieren
UPDATE <Tabellenname> SET <Datenfeld1>=<neuer Wert1>, <Datenfeld2>=<neuer Wert2>;
Where Bedingungen
Where kann an die meisten Befehle angehangen werden und sorgt so dafür, dass nur bestimmte Datensätze angesprochen werden.
Mathematische Operationen: =, !=, >, <, >=, <=, +, -, *, /
Boolesche Operatoren: AND, OR, NOT
Textmustervergleich: LIKE mit % für beliebige Zeichenkette (auch leer) und _ für einzelnes Zeichen z.B.: name LIKE "H%"
Bereichsoperator: BETWEEN x AND y
Mengenvergleich: IN(wert1, wert2, …)
Einfache Datenabfragen
SELECT * | spaltenliste | berechnung [TOP anzahl]
FROM tabelle(n)
[WHERE bedingung]
[GROUP BY spalten(n)]
[HAVING bedingung]
[ORDER BY spalte(n) [ASC | DESC]]
[LIMIT anzahl | start, anzahl];
Funktionen in Abfragen
Normale Funktionen
| Funktion | Beschreibung |
|---|---|
| CURDATE() | Gibt das aktuelle Datum zurück |
| DATEDIFF(datum1, datum2) | Berechnet die Datumsdifferenz in Tagen |
| YEAR(datum) | Gibt das Jahr zurück |
| MONTH(datum) | Gibt das Monat zurück |
| DAY(datum) | Gibt den Tag zurück |
| DATE_ADD(datum, intervall) | Addiert das Intervall zum Datum |
Aggregatsfunktionen
Sie berechnen ein Ergebnis aus den Werten einer Spalte (mehrere Datensätze).
| Funktion | Beschreibung |
|---|---|
| COUNT(feld) | Zählt alle nicht-null-Werte innerhalb einer Spalte |
| COUNT(*) | Zählt die Datensätze/Zeilen |
| SUM(feld) | Berechnet die Summe einer ganze Spalte |
| AVG(feld) | Berechnet den Durchschnitt einer ganze Spalte (NULL-Werte zählen nicht mit) |
| MIN(feld) | Sucht den kleinsten Wert einer ganzen Spalte. |
| MAX(feld) | Sucht den größten Wert einer ganzen Spalte. |
Gruppierungen
Beispiel
SELECT ort, COUNT(ort) FROM kunde GROUP BY ort;
SELECT ort, COUNT(ort) FROM kunde GROUP BY ort HAVING COUNT(ort) > 100;
Abfragen über mehrere Tabellen (Joins)
Inner Join
Ein Inner Join gibt die Schnittmenge der Tabellen zurück. Wenn zum Beispiel eine ID nur in einer Tabelle vorkommt wird sie nicht angezeigt.
Left Join
Ein Left Join gibt alle Daten von der linken Tabelle zurück und zusätzlich die passende Schnittmenge der zweiten.
Right Join
Gibt alle Daten der rechten Tabelle zurück und zusätzlich die Schnittmenge der linken.
Full Outer Join / Full Join
Gibt alle Daten aus beiden Tabellen zurück.
Index
Indexe werden in Relationalen Datenbanken dazu benutzt, Daten schneller abfragen zu können.
CREATE INDEX index_name
ON table_name (column1, column2, ...);
Mit dem Keyword UNIQUE können doppelte Werte ausgeschlossen werden.
CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
Erklärungsvideos 📹
MySQL - The Basics // Learn SQL in 23 Easy Steps
MySQL Tutorial for Beginners [Full Course]
SQL Joins: Difference Between Inner/Left/Right/Outer Joins
Links 🔗
10 - Normalisierung
Erste Normalform
Definition
Die Erste Normalform (1NF) ist dann gegeben, wenn alle Informationen in einer Tabelle atomar vorliegen.
Stichpunkte
- Atomar
Zweite Normalform
Definition
Ein Relationstyp (Tabelle) befindet sich genau dann in der zweiten Normalform (2NF), wenn er sich in der ersten Normalform (1NF) befindet und jedes Nichtschlüsselattribut von jedem Schlüsselkandidaten voll funktional abhängig ist.
Stichpunkte
- Setzt 1NF vorraus
- Alle Attribute hängen vom Primary Key ab
Dritte Normalform
Definition
Ein Relationstyp befindet sich genau dann in der dritten Normalform (3NF), wenn er sich in der zweiten Normalform (2NF) befindet und kein Nichtschlüsselattribut transitiv von einem Kandidatenschlüssel abhängt.
Stichpunkte
- Setzt 2NF vorraus
- Indirekt abhänge Attribute müssen in eine Tabelle ausgelagert werden
Erklärungsvideo 📹
11 - ER-Modell
Entity relationship model
- Dient als Grundlage im Datenbankentwurf
- Entitäten werden sichtbar
- Relationen zwischen Entitäten werden sichtbar
Elemente des ER-Modells
| Element | Beschreibung |
|---|---|
| Rechteck | Stellt eine Entität dar |
| Raute | Stellt eine Beziehung dar |
| Oval | Stellt ein Attribut dar |
Beziehungsarten
1 zu 1 Beziehung
Eine Person hat einen Ausweis.
Ein Ausweis gehört einer Person.
1 zu N Beziehung
Ein Schüler ist in einer Klasse.
Eine Klasse hat mehrere Schüler.
N zu M Beziehung
Ein Autor kann mehrere Bücher schreiben.
Ein Buch kann von mehreren Autoren geschrieben werden.