%Teilweise Erzeugt mit dem LaTeX-Generator: http://latex.sehnot.de

%Schriftgröße, Layout, Papierformat, Art des Dokumentes
\documentclass[10pt,oneside,a4paper]{scrartcl}

%Einstellungen der Seitenränder
\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=1.5cm,includeheadfoot]{geometry}

%neue Rechtschreibung
\usepackage[ngerman]{babel}

%Umlaute ermöglichen
\usepackage[utf8]{inputenc}

%Gesamtseitenzahl
\usepackage{lastpage}

% Kopf- und Fußzeile
\usepackage[automark]{scrpage2}

%Quellcode-Listings
\usepackage{listings}

%Hyperlinks
\usepackage{hyperref}

%Kopfzeile
\ihead{Softwaretechnik}
\chead{}
\ohead{http://kohnlehome.de/informatik/solid.pdf}
\setheadsepline{0.5pt}

%Fußzeile
\setfootsepline{0.5pt}
\ifoot{Franz Kohnle}
\cfoot{Seite \thepage\ von  \pageref{LastPage}}
\ofoot{\today}

\pagestyle{scrheadings}

\begin{document}

% Überschrift 
\begin{center}
\LARGE % Schriftgröße
\bfseries % Fettdruck
\sffamily % Serifenlose Schrift
S.O.L.I.D: Prinzipien des Klassendesigns
\end{center}

\section{SRP: Single Responsibility Principle}
\paragraph{Prinzip einer einzigen Verantwortung}
Jedes Modul soll genau eine Verantwortung übernehmen. Es soll nur einen einzigen Grund geben, aus dem es geändert werden muss.

\section{OCP: Open Closed Principle}
\paragraph{Offen für Erweiterung, geschlossen für Änderung}
Ein Modul soll mithilfe anderer Module erweiterbar sein. Für die Erweiterung darf keine Änderung am Modul selbst nötig sein.

\section{LSP: Liskov Substitution Principle}
\paragraph{Ersetzbarkeitsprinzip}
Eine Instanz einer Klasse soll durch eine Instanz einer abgeleiteten Klasse ersetzt werden können, ohne dass sich das Verhalten ändert.

\section{ISP: Interface Segregation Principle}
\paragraph{Schnittstellentrennungsprinzip}
Clients sollen nur von Schnittstellen abhängig sein, die sie auch tatsächlich benutzen. (Aufteilung großer Schnittstellen gemäß der Bedürfnisse der Clients)
 
\section{DIP: Dependency Inversion Principle}
\paragraph{Umkehr der Abhängigkeiten}
Module sollen Abstraktionen statt Konkretisierungen nutzen. (Schnittstellen statt konkrete Klassen)




\begin{thebibliography}{999}
\bibitem [Objektorientierte Programmierung]{} \url{http://openbook.galileocomputing.de/oop/}
\bibitem [Wikipedia]{}  \url{http://de.wikipedia.org/wiki/Prinzipien_Objektorientierten_Designs}
\end{thebibliography}

\end{document}
