LF11 Funktionalität in Anwendungen realisieren

Dieses Lernfeld 11a bringt dir bei, wie du richtige Software entwickelst - von der ersten Idee bis zum fertigen Programm.

Hier lernst du Algorithmen, Java, Datenstrukturen und UML kennen. Das ist das Handwerkszeug für jeden Programmierer.


I. Grundlagen der Algorithmen

Algorithmen sind wie Kochrezepte für den Computer - sie zeigen Schritt für Schritt, wie Probleme gelöst werden.

Ohne Algorithmen könnte kein Programm funktionieren. Sie sind das Herz jeder Software.


Algorithmus

Ein Algorithmus ist ein präzise festgelegtes Verfahren zur Lösung von Problemen. Wie ein Kochrezept, das aus endlich vielen Schritten besteht und in endlicher Zeit ein Ergebnis produziert.

5 Bedingungen für jeden Algorithmus:

Beispiel Gehaltsberechnung: Bruttolohn rein, Nettolohn raus. Immer dasselbe Ergebnis bei gleichen Daten.

II. Java Entwicklungsumgebung

Java ist plattformunabhängig - einmal geschrieben, läuft überall. Das macht die Sprache so beliebt für große Software-Projekte.

Dafür brauchst du die richtige IDE und verstehen, wie der javac funktioniert.


Java IDE

Eine IDE ist wie eine Werkbank für Programmierer - alles was du brauchst ist an einem Ort.

Wichtige Komponenten:

Entwicklungsfluss:

  1. Quelle.java - dein Java Code
  2. Java Compiler (javac) - macht Bytecode draus (Quelle.class)
  3. JVM - führt Bytecode auf dem Zielsystem aus
Tipp NetBeans ist eine gute IDE für Anfänger - hat alles integriert.

III. Java Grundlagen

Java ist objektorientiert - alles dreht sich um Klassen und Objekte. Das macht Programme übersichtlich und wiederverwendbar.

Mit Klassen baust du Bausteine, aus denen du dann Objekte erschaffst.


Java klasse und Java Objekt

Klassen sind wie Baupläne, Objekte sind die fertigen Häuser. Eine Klassen beschreibt, was ein Objekt können soll.

Aufbau einer Java klasse:

Beispiel Klasse Tier:

class Tier {
   String art;        // Attribut
   double gewicht;    // Attribut
   
   void friss() {     // Methode
       // Code zum Fressen
   }
}

Java Objekt erstellen:

Tier elefant = new Tier();  // Neues Objekt
elefant.art = "Elefant";    // Attribut setzen
elefant.friss();            // Methode aufrufen

IV. Datenstrukturen

Datenstrukturen sind wie Container - verschiedene Formen für verschiedene Zwecke. Willst du Daten sortiert? Unsortiert? Schnell durchsuchen?

Die richtige Datenstruktur macht dein Programm schneller und sauberer.


Einfache Datenstrukturen

Arrays

Collections - die Flexiblen

Lists:

Sets:

Maps:

| Datenstruktur | Eigenschaften | Verwendung | |-----------------------------------|---------------|------------| | ArrayList | Variabel, schneller Zugriff | Wenn du oft auf Elemente zugreifst | | LinkedList | Verkettet, schnelles Einfügen | Wenn du oft einfügst/löschst | | HashSet | Eindeutige Elemente, unsortiert | Duplikate vermeiden | | HashMap | Schlüssel-Wert-Paare | Wie ein Wörterbuch |


V. Komplexe Datenstrukturen

Für große Datenmengen brauchst du clevere Datenstrukturen - sie machen den Unterschied zwischen sekunden- und minutenlangen Wartezeiten.

Hash-basierte Strukturen und Sortieralgorithmen sind hier die Profiwerkzeuge.


Hashbasierte Datenstrukturen

Hash-Verfahren sind wie ein super-schneller Index in einem Buch. Statt alles durchzublättern, springst du direkt zur richtigen Seite.

Eigenschaften:

Bekannte Hash-Verfahren:

Anwendung Datenbanken nutzen Hash-Verfahren für schnelle Suchen in riesigen Tabellen.

Sortieralgorithmen

Heapsort

Prinzip Beginne bei letzten Elternknoten, baue Heap auf, tausche größtes Element an Ende.

VI. UML Modellierung

UML ist die Sprache der Software-Architekten. Bevor du programmierst, zeichnest du deine Ideen auf - das spart später viel Zeit.

Mit UML können alle im Team verstehen, wie die Software aufgebaut ist.


UML - Unified Modeling Language

UML hat verschiedene Diagramme für verschiedene Sichten auf deine Software - wie ein Bauplan mit Grundriss, Seitenansicht und Elektroplan.

Die 5 Sichten:

Anwendungsfalldiagramm

Use-Case-Diagramme zeigen, was dein System für wen tun soll - wie eine Aufgabenliste für die Software.

Aufbau:

Beispiel Bankautomat: Akteur "Kunde" → Anwendungsfall "Geld abheben", "Kontostand prüfen"

Klassendiagramm

Klassendiagramme sind der Bauplan deiner Klassen - zeigen Eigenschaften, Funktionen und Beziehungen.

Darstellung einer Klasse:

┌─────────────┐
│ Klassenname │
├─────────────┤
│ + attribut1 │ ← Attribute
│ - attribut2 │
├─────────────┤
│ + methode1()│ ← Methoden
│ - methode2()│
└─────────────┘

Sichtbarkeiten:

Sequenzdiagramm

Sequenzdiagramme zeigen zeitliche Abläufe - wie ein Chat-Verlauf zwischen Objekten.

Elemente:

Aktivitätsdiagramm

Aktivitätsdiagramme sind wie Flussdiagramme - zeigen Entscheidungen und parallele Abläufe.

Notation:

Anwendung:


VII. Softwareentwicklung

Gute Software entsteht nicht durch Zufall - du brauchst Planung, Tests und modularen Aufbau.

Modularität macht deine Software wartbar und erweiterbar.


Modulare Softwarekomponenten

Prinzipien:

Vorteile modularer Entwicklung:

Faustregel Eine Komponente sollte genau eine Aufgabe haben und diese gut erfüllen.

Softwarekomponenten testen

Testarten:

Test-Prinzip:

  1. Arrange - Testdaten vorbereiten
  2. Act - Funktion ausführen
  3. Assert - Ergebnis prüfen
Warum testen? Tests fangen Fehler früh ab - je später ein Fehler gefunden wird, desto teurer wird die Reparatur.

VIII. Erweiterte Konzepte

Für professionelle Software brauchst du noch mehr Werkzeuge - Sortieralgorithmen, Komprimierung und Verschlüsselung.

Diese Themen machen aus einem einfachen Programm eine robuste Anwendung.


Sortieralgorithmen

Sortierung ist überall - in Suchmaschinen, Datenbanken, Listen. Der richtige Sortieralgorithmus macht den Geschwindigkeitsunterschied.

Wichtige Sortieralgorithmen:

Komprimierung

Komprimierung spart Speicherplatz und Übertragungszeit - besonders wichtig bei großen Datenmengen.

Verfahren:

Verschlüsselung

Verschlüsselung schützt sensible Daten - vom Online-Banking bis zu privaten Nachrichten.

Grundarten:

Sicherheit Niemals eigene Verschlüsselung entwickeln - nutze bewährte Bibliotheken!
Diese Zusammenfassung basiert auf den Materialien von Herrn Wondmu Alemu.

Die Informationen und Konzepte wurden aus den von ihm bereitgestellten Lehrunterlagen und Vorlesungen entnommen. Alle Bilder, die hier gepostet wurden, wurden in meiner eigenen Umgebung erstellt, stammen aus dem Buch Westermann oder aus den PDF-Präsentationen von Herrn Wondmu Alemu.
Mein Ziel war es, die wesentlichen Punkte zusammenzufassen und die Kerninhalte verständlich darzustellen.