Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Matematică
Programul de studii: Matematică informatică -linia de studiu germană
Limba de predare: Germană

SYLLABUS

I. Allgemeine Daten
Kennnummer	Disziplin	
MID0002	OBJEKTORIENTIERTE PROGRAMMIERUNG	

Semester	Stunden: C+S+L	Kategorie	Status	
2	2+0+2	Grundvorlesung	Pflichtvorlesung	

II. Lehrkräfte der Universität
Name und	Wiss.	Position	Lehrstuhl	Lehrveranstaltung	
Vorname	Grad			V	S	L	
TRÎMBITAS Maria-Gabriela	Dr.	Lekt.	Sisteme Informatice	*			

Assozierte Lehrkräfte
Name und	Wiss.	Institution	Position	Lehrveranstaltung	
Vorname	 			V	S	L	

III. Ziele der Disziplin
•	Am Ende des Lernprozesses sollen die Lernenden die Grundlagen der strukturierten und objektorientierten  Programmierung beherrschen und vertiefte Kenntnisse in objektorientierter Programmierung unter C++ erwerben und selbständig C++ Programme entwickeln können
•	Grenzen der strukturierten Programmierung kennen
•	Notwendigkeit und Möglichkeiten der objektorientierten Programmierung kennen
•	Einblick in objektorientiertes Design nehmen
•	In der Vorlesung soll das Verständnis für Programmierstrukturen und -techniken erworben werden, in den Labor Stunden sollen diese angewendet werden.

IV. Inhalte der Disziplin
•	Einen kurzen Einblick in die prozedurale Programmierung in C 
•	Grundbegriffe der objektorientierten Programmierung
•	Die Programmiersprache C++
•	Vertiefte Kenntnisse in objektorientierter Programmierung unter C++

V. Pflichtliteratur
1. A.V. Aho, J.E. Hopcroft, J.D. Ullman, Data Structures and Algorithms, Addisson-Wessley Publ., Massachusetts, 1983.
2. R. Andonie, I. Garbacea, Algoritmi fundamentali. O perspectiva C++, Editura Libris, 
3. Alexandrescu, Programarea modernă in C++. Programare generică si modele de proiectare aplicate, Editura Teora, 2002
4. M. Frentiu, B. Parv, Elaborarea programelor. Metode si tehnici moderne, Ed. Promedia, Cluj-Napoca, 1994.
5. E. Horowitz, S. Sahni, D. Mehta, Fundamentals of Data Structures in C++, Computer Science Press, Oxford, 1995.
6. K.A. Lambert, D.W. Nance, T.L. Naps, Introduction to Computer Science with C++, West Publishing Co., New-York, 1996.
7. L. Negrescu, Limbajele C şi C++, vol. 1,2,3, Ed. Albastra, Cluj-Napoca 2001.
8. Dan Roman, Ingineria programarii obiectuale, Editura Albastra, Cluj_Napoca, 1996.
9. B. Stroustup, The C++ Programming Language, Addison Wesley, 1998.

VI. Thematik der wöchentlichen Lehrveranstaltungen
1. Grundlagen der C kurzgefasst (V1) [5.3,4,5]
 	(L1- Einfache C Programme)

2. C++ Anweisungen und Funktionen (V2) [5.20]
•	C++ Anweisungen
•	Deklaration und Definition der Funktionen in C++
•	Überladen von Funktionen
•	Inline Funktionen
(L2 – structurierte C++ Programme)

3. Datentypen und dynamische Speicherzuweisung (V3) [5.8]
•	Feld- und Strukturdatentypen
•	Dynamische Speicherverwaltung 
•	Vertiefung der Zeigerproblematik 
•	Mehrdimensionale Arrays - Zeiger und Felder 
•	Zeiger auf Funktionen (Funktionszeiger) 
•	Zeiger auf Zeiger 
(L3 –dynamisch allokierte Datenstrukturen in C++)

4. Modulares Programmieren (V4) [5.7]
•	Schnittstellen 
•	Implementationen 
•	Abstrakte Datenobjekte (ADO) 
•	Abstrakte Datentypen (ADT) 
•	Überblick über die C++-Standardbibliothek
(L4- Modulare Implementierung eines Menge - ADTs)
5. Grundlagen objektorientierter Programmierung in C++(V5) [5.22]
•	Klassen, Methoden, Kapselung, 
•	Instanzen (Objekte),
•	Konstruktoren und Destruktoren
•	Zugriffsrechte und friend Funktionen
(L5- Objectorientierte Implementierung eines Polynom - ADTs)
6. Überladen der Operatoren. Statische Klassenelemente(V6) [5.23]
(L6- Objectorientierte Implementierung eines Liste - ADTs)
7. Vererbung(V7) [5.28]
•	Einfache Vererbung
•	Überladen der Methoden
•	Mehrfachvererbung
(L7- Implementierung einer verketteten Liste)
8.  Polymorphie(V8) [5.29]
•	virtuelle Methoden
•	dynamisches Binden
•	virtuelle Basisklassen
9. Abstrakte Klassen. Objekt orientierte Programmierung einer Strukturenbibliothek(V9) [5.27,30]
(L8, L9- Implementierung einer Bibliothek von Datenstrukturen: Mengen, Liste, Bäume)

10. Ein- und Ausgabe mit Stream-Klassen(V10) [5.31]
•	Standard-Stream-Operatoren 
•	Zustände und Elementfunktionen von Streams 
•	Formatdefinitionen, Dateizugriff 
•	Kopplung von Streams, Streambuffer 
•	Überlaufsichere Stringstreams 
(L10 –Teste mit E/A Operationen)
11. Typ-loses Programmieren(V11) [1]
•	Funktionstemplates, 
•	Klassentemplates, 
•	Methodentemplates
(L11-ADT Listen Implementierung mit Templates)
12. Ausblick auf die Möglichkeiten der objektorientierten Bibliothek STL Einblick in Container-Klassenbibliotheken(V12) [1]
(L12 – Programme welche STL Sortieralgorithmen anwenden)
13. Ausnahmen(V13) [1]
•	Ausnahmen und polymorphe Klassen 
•	Unerwartete Ausnahmen 
•	Ausnahmen und dynamische Datenstrukturen
(L13- Implementierung eines ADT Stack und Schlange mit Ausnahmen und dynamische Datenstrukturen )
14. Visual C++(V14)[1]
(L14- Einfaches Programm mit graphischer Benutzeroberfläche in Visual C++)

VII. Didaktische Methoden
Frontalunterricht, Vorträge, Konversationen, Projektarbeit, Übungen, Erklärung, die Diskussion der Problemstellungen, Dokumentation, individuelles Studium, Teamarbeit

VIII. Beurteilung der studentischen Leistungen
Die Kontrollarbeit ist in der 8. Woche eingeplant. Die Thematik dafür ist diejenige, welche für Vorlesung und Seminar bis zur 8. Woche vorgesehen ist.
Die Gesamtnote für die Disziplin Objektorientierte Programmierung wird aufgrund der Leistungen nach der Formel EN = (N1+ N2+ N3)/3 berechnet, wobei N1 =(K+ S+L)/3 (K= die Note in der Kontrollarbeit, S = die Note für die aktive Mitarbeit, L = die Note für das Lösen der Laboraufgaben während des Semesters), N2 = die Note in der praktischen Prüfung und N3 die in der schriftlichen Abschlussarbeit erzielte Note bezeichnet.
Ein Student muss an mindestens 80% der Laborstunden teilnehmen. Es werden bei der Prüfung nur die Studenten akzeptiert welche N1 >= 5 haben. Um die Prüfung zu bestehen müssen N2 und N3 >= 5 sein.

IX. Zusatzliteratur
1. Alexandrescu, Programarea moderna in C++. Programare generica si modele de proiectare
aplicate, Editura Teora, 2002.(Biblioteca).
2. R. Andonie, I. Garbacea, Algoritmi fundamentali. O perspectiva C++, Editura Libris,
Cluj_Napoca, 1995 (Biblioteca).
3. B. Stroustrup, The C++ Programming Language, Addison Wesley, 1997
http://public.research.att.com/~bs/3rd.html.
4. Introduction to Object-Oriented Programming Using C++, Peter Müller (pmueller@uugna.
mit.edu), Globewide Network Academy (GNA), www.gnacademy.org/ August 31, 1997
http://www.zib.de/visual/people/mueller/Course/Tutorial/tutorial.html
5. STL Iterator Classes, Dr. Mark J. Sebern, Version 1.2 (1/4/1998),
http://www.msoe.edu/eecs/ce/courseinfo/stl/iterator.htm
6. C++ Standard Template Library, http://www.cppreference.com/cppstl.html
7. C++ Programming Tutorial, John Copp,
http://cplus.about.com/od/beginnerctutorial/l/blcplustut.htm
8. B. Parv, A. Vancea, Fundamentele limbajelor de programare, Microinformatica, Cluj-
Napoca, 1996 (Biblioteca).

	Datum,						Verantwortliche Lehrkraft,
	1.05.2007						Lect. Dr. TRÎMBITAS Maria-Gabriela