Object-Oriented Paradigm

ID: 7091
Course type: scientific and vocational
Course coordinator: Radojević Lj. Slobodan
Lecturers: Radojević Lj. Slobodan
Contact: Radojević Lj. Slobodan
Level of studies: B.Sc. (undergraduate) Academic Studies – Information Technologies in Mechanical Engineering
ECTS: 5
Final exam type: written+oral
Department: Department of Information Technologies in Mechanical Engineering

Lectures

Goal

To enable students to acquire knowledge of the basics of object-oriented programming. To understand inheritance as the essence of class hierarchies, and how instances are formed - the realization of objects that such hierarchies describe. To introduce them to encapsulation, overloading, polymorphism and the impact of these features on instances. Students must form and use their own class systems respecting object-oriented design methodologies.

Outcome

The student's ability to design a class system, implement it, and use it functionally. They will learn about basic containers and how to use them to create class system objects.

Theoretical teaching

1. Basics of object-oriented software. The concept of class, object, instance. 2. Basics of encapsulation, overloading, polymorphism and inheritance. 3. Designing a class and class system. 4. Constructors and destructors. Explicit and implicit constructors. How and when constructors and destructors are executed. 5. Inheritance and relationships between superclass and subclass objects. Application of access modes in inheritance. 6. Types of inheritance, single, multiple, hierarchical, multiple, diamond problem. 7. Operator and function overloading. Polymorphism and the way to call a specific method in a polymorphism system. Virtual functions. 8. Virtual class and its place in the class system. 9. Friend class and its place in the class system. 10. The idea of ​​a container. Vector container and its use. The problem of dynamic memory. 11. Output and input of object data using vectors.

Practical teaching

1. Input and output in C++. Class syntax in C++. 2. Constructors and destructors. Examples of explicit and implicit constructors. Calling constructors and destructors. 3. Example of a single class hierarchy. Overview of data access modes in the class hierarchy. 4. Operator overloading and basic examples of polymorphism. 5. Constructors and destructors. Examples of constructors and destructors and insight into how to execute their code through a debugger. 6. Types of inheritance on examples and how to use access modes. 7. Example of a multiple hierarchical class system. 8. Diamond problem and how to solve it. 9. Use of virtual and friend classes. 10. Vector container and use. Dynamic memory problem. 11. Creating objects in a vector container.

Attendance requirement

Programming. Data structures. Fundamentals of algorithm theory. Fundamentals of operating systems.

Resources

C++11, C++14, C++17, C++20 gcc/g++ Kate, Visual Studio Code

Assigned hours

Total assigned hours: 75

Active teaching (theoretical)

New material: 25
Elaboration and examples (recapitulation): 0

Active teaching (practical)

Auditory exercises: 25
Laboratory exercises: 10
Calculation tasks: 0
Seminar paper: 0
Project: 0
Consultations: 0
Discussion/workshop: 0
Research study work: 0

Knowledge test

Review and grading of calculation tasks: 0
Review and grading of lab reports: 0
Review and grading of seminar papers: 0
Review and grading of the project: 0
Test: 10
Test: 0
Final exam: 5

Knowledge test (100 points total)

Activity during lectures: 0
Test/test: 70
Laboratory practice: 0
Calculation tasks: 0
Seminar paper: 0
Project: 0
Final exam: 30
Requirement for taking the exam (required number of points): 70

Literature

Bjarne Stroustrup; A Tour of C++; Addison-Wesley; Bjarne Stroustrup; C++ Programming language; Addison-Wesley; Ulla Kirch-Prinz, Peter Prinz; A Complite Guide to Programming in C++; Jones and Bartlett Publishers; Nell Dale; C++ Data Structures; Jones and Bartlett Publishers