Object-oriented programming

Course Description

Introduction. Basic principles of object-oriented programming and design. Modelling. Reusability. Frameworks for program development. Java programming language. Java as a machine independent platform. Programming tools. Command line tools. Coding conventions. Refactoring. Abstraction. Encapsulation. Classes and objects. Static members. Access modifiers. Constructors. Class relationships. Memory management and garbage collectors. Inheritance. Polymorphism. Abstract classes. Interfaces. Introduction to design patterns. Exceptions. Files and streams. Collections. General collection algorithms. Simple and complex comparators. Generics. Multithreading and multithreaded applications. Events. Development of applications with graphical user interface. Simple and complex graphical components. Development of custom graphical components. Program testing. Program performance analysis. Program optimization.

General Competencies

After passing the exam, students will be able to understand the basic concepts of object oriented programming. They will be able to develop the applications of small and medium complexity in Java on their own. They will be able to apply the learnt concepts of object oriented paradigm when working in other programming languages.

Learning Outcomes

  1. Describe the principles of the object oriented programming paradigm
  2. Apply the concepts of abstraction, data encapsulation, inheritance and polymorphism to software design
  3. Use an object oriented programming language, and associated class libraries, to develop programs
  4. Design, develop, test, and debug programs using object oriented principles in conjuncture with an integrated development environment
  5. Design and develop programs with Graphical User Interfaces capabilities
  6. Apply multi-threading for creation of responsive user interfaces
  7. Describe and explain the factors that contribute to a good object oriented solution

Forms of Teaching

Lectures

Materials and presentations are on course web page.

Exams

Midterm exam and final exam

Laboratory Work

complex laboratory assignments which includes object oriented programming in Java

Experiments

inside the lectures are demonstrations of program solutions and tools

Consultations

consultations are conducted by all professors and teaching assistants every week

Acquisition of Skills

Searching Web and finding work in the field of the course

Programming Exercises

Personal tools for programming in Java, independent specification and programming programs in Java

E-learning

independent finding video tutorials and experimenting with them

Other

homework

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Laboratory Exercises 50 % 50 % 0 % 50 %
Mid Term Exam: Written 50 % 25 % 0 %
Final Exam: Written 50 % 25 %
Exam: Written 50 % 50 %

Week by Week Schedule

  1. Java programming language. Java as a machine independent platform. Programming tools. Command line tools. Coding conventions. Refactoring.
  2. Abstraction. Encapsulation. Classes and objects. Static members. Access modifiers.
  3. Constructors. Class relationships.
  4. Inheritance. Polymorphism.
  5. Abstract classes. Interfaces.
  6. Nested and anonymous classes. Exceptions.
  7. Files and streams.
  8. Midterm exam.
  9. Collections. Basics of collections, sets and implementations, lists and implementations. Maps. Other collections.
  10. General collection algorithms. Generics. Simple and complex comparators.
  11. Development of applications with graphical user interface. Basics, windows, visual component layout and supporting managers. Simple graphical components.
  12. Introduction to multithreading and multithreaded applications: basics, working with thread pools.
  13. Components for complex data display: models and views. Menus. Development and use of custom graphical components. User interfaces and multithreading.
  14. Program testing. Program performance analysis. Program optimization.
  15. Final exam.

Study Programmes

University undergraduate
Computing (study)
(3. semester)

Literature

Grady Booch, Robert A. Maksimchuk, Michael W. Engle, Bobbi J. Young, Jim Conallen, Kelli A. Houston (2007.), Object-Oriented Analysis and Design with Applications (3rd Edition), Addison-Wesley
Bruce Eckel (2006.), Thinking in Java (4th Edition), Prentice-Hall
Marko Čupić (2007.), Materijali za Java tečaj, FER
Kent Beck (2006.), Test-Driven Development, By Example, Addison-Wesley
Walter Savitch, Kenrick Mock (2012.), Absolute Java, Student Value Edition (5th Edition), Addison-Wesley

Associate Lecturers

Laboratory exercises