Lecturer(s)
|
-
Bartl Eduard, doc. RNDr. Ph.D.
-
Krupka Michal, doc. RNDr. Ph.D.
|
Course content
|
This is a followup of the Programming Paradigms 1 course. The course contains a general introduction to Object Oriented Programming. The aim of the course is to take up an overview and basic principles of OOP without strong connection to a specific programming language. To achieve this goal, the course mentions widely used topics of OOP as well as those that are not used frequently at present. The course complements other courses where these topics are dealt with in a more tight connection to current usage of OOP in practice. Common Lisp is used as the main programming language throughout the course since all the topics can be demonstrated in it and students have experience with the Scheme language, which is very similar. The principles of the OOP will be presented on nontrivial examples, students will try themselves three basic user roles in OOP: the role of an implementor of an object oriented language, the role of an author of a class library as well as the role of its user. 1. From Scheme to Common Lisp. Differences in terminology, differences in evaluation model and implementation of empty list. Lisp counterparts of tools from R5RS. Lisp tools not found in Scheme. 2. Encapsulation and polymorphism. Classes and objects, slots and methods, messages. Modularity in OOP, objects as black-boxes. Types of slot and method protection. 3. Simple inheritance. The notion of inheritance, demonstration of simple class library, working with class libraries. 4. Association. The notion of association, delegates, containers. Event-driven Programming, working with events in a simple graphic library. Treating messages and events as data. 5. Prototype-based languages. Inheritance and messages in prototype-based languages. Prototype and class-based languages comparison, implementation of simple prototype-based language and library. Demonstration of a pure prototype-based object language. 6. Multiple inheritance. The notion of multiple inheritance, multiple inheritance in various programming languages. Programming with interfaces, mixin programming. Advantages and disadvantages of multiple inheritance. 7. Non-traditional features of CLOS. Generic functions and multimethods, method combination and its usage. Using functional and object programming together, dynamic object programming. Metaobject protocols.
|
Learning activities and teaching methods
|
Work with Text (with Book, Textbook), Training in job and motor Skils, Laboratory Work
|
Learning outcomes
|
The course contains a general introduction to Object Oriented Programming.
1. Knowledge Describe advantages and development styles of object-oriented programs.
|
Prerequisites
|
unspecified
|
Assessment methods and criteria
|
Student performance
Throughout the course, students are required to develop several small projects. To pass the final examinations, students will need to develop and debug another small project.
|
Recommended literature
|
-
Fowler, M. (2003). Patterns of enterprise application architecture. Addison-Wesley.
-
GRAHAM P. (1996). ANSI Common Lisp. Prentice Hall.
-
KICZALES GREGOR, DES RIVIERES JIM AND BOBROW DANIEL G. (1991). The Art of the Metaobject Protocol. Cambridge, MA ; London : MIT Press.
-
MEYER BERTRAND. (1997). Object-Oriented Software Construction. Prentice Hall.
-
Seibel P. (2005). Practical Common Lisp. Apress.
-
Weitz, E. (2015). Common Lisp Recipes: A Problem-Solution Approach. Apress.
|