- Class 30
- Practice 45
- Independent work 105
Lecturers and associates
This module introduces students to the object-oriented principles: encapsulation, inheritance, polymorphism, and abstraction.
This module is core to the Software Engineering subspecialisation and provides the foundation for a wide number of programming modules in the following semesters. Skills learned in this module will contribute significantly to students’ development as professionals in respected fields.
Students will learn:
• object-oriented principles: encapsulation, inheritance, polymorphism, and abstraction.
• object-oriented topics specific for C sharp, including LINQ (Language Integrated Query) API, Collections Framework, and Exception handling mechanisms.
• delegates as a prerequisite for introduction to functional paradigm and the platform-specific implementations of Publisher-Subscriber and Repository patterns.
The module is taught in C sharp programming language. The module assessment is based on solving a series of smaller practical tasks in the defined programming language and software development tool.
1. Stellman, A. and Greene J. (2021) Head First C#: A Learner's Guide to Real-World Programming with C# and .Net Core. 4th edn. Sebastopol: O'Reilly.
1. Albahari, J. (2019) C# 8.0 Pocket Reference. 1st edn. Sebastopol: O'Reilly.
1. Skeet, J. (2019) C# in Depth. 4th edn. Shelter Island: Manning Publications.
Minimal learning outcomes
- Design a solution to a given problem according to a basic specification and implement it using classes and objects.
- Apply the principle of inheritance in a programming language.
- Identify the need for a polymorphic solution to the problem and implement it.
- Anticipate the possibility of exceptions and process them.
- Implement and apply generic structures in a programming language.
- Implement part of the software solution using the "Publisher-Subscriber" pattern.
Preferred learning outcomes
- Chose appropriate data types and access modifiers to reflect basic specification.
- Recognize the need to use and apply abstract classes and access modifiers to ensure non-redundant and reusable solution to a given problem.
- Improve solution readability by introducing operator overloading.
- Create and apply user defined exception classes as the solution to the given problem.
- Select a suitable generic collection class as the solution to the given problem.
- Implement part of the software solution using the anonymous methods.