← Back to Modules
MOD 04 · Completed · 79%

Object-oriented
Programming

University of Essex Online · CertHE Computer Science · Level 4 · Tutor: Dr Anupam Mazumdar

Abstraction Encapsulation Inheritance Polymorphism Design Patterns
Section 01

Learning Outcomes

This module introduced the object-oriented paradigm, building on the procedural foundations of the previous module and reshaping how I approach software design.

LO1

Abstraction

Design abstract data types and interfaces using Abstract Base Classes to define clear contracts between components.

LO2

Encapsulation

Apply information hiding through private attributes, property getters and setters, and integrity validation.

LO3

Inheritance

Build class hierarchies that share and extend behaviour, using constructors and super() correctly.

LO4

Polymorphism

Implement method overriding and runtime method dispatch to write flexible, extensible code.

LO5

Design Patterns

Apply software engineering concepts and design patterns within object-oriented systems, including composition.

LO6

Professional Communication

Explain technical concepts clearly through code, documentation, presentation slides, and a recorded video.

Section 02

Artefacts

Two assessed components made up this module: an individual presentation built around a coded system, and an end-of-module test combining code and written answers.

Artefact 01 · Mid Module · Individual Presentation

Online Shopping System — OOP Demonstration

78%

Description

An object-oriented Online Shopping System built in Python, accompanied by a presentation (PowerPoint) and a recorded video explaining the concepts. The system demonstrates all four pillars of OOP through a realistic e-commerce workflow: products, customers, and order processing with discount logic.

Technical highlights include abstraction via Abstract Base Classes (an Orderable interface and an abstract User class); encapsulation through a private price attribute with a property getter/setter and validation; inheritance through a PremiumCustomer subclass; and polymorphism through method overriding of the discount calculation, dispatched at runtime. The code also uses type hints, composition, and constructors and destructors, with Harvard-referenced sources cited throughout.

Skills Demonstrated

Abstract Base Classes Property Encapsulation Inheritance Runtime Polymorphism Composition Technical Presentation

Tutor Feedback (summary)

LanguagePython (OOP)
FormatCode + slides + video
Result78%
Artefact 02 · End of Module · Individual Test

End of Module Individual Test

80%

Description

An end-of-module individual test completed directly on the learning platform, combining practical coding tasks with written answers. The test assessed understanding of object-oriented principles, design patterns, software engineering concepts, and collaborative development practices.

Skills Demonstrated

OOP Principles Design Patterns Software Engineering Applied Coding

Tutor Feedback (summary)

FormatCode + written (on platform)
Result80%
Section 03

Reflective Piece

Written using the 3 W's framework (What / So What / What Next), as recommended by the UoEO Department of Computing.

What? — Description

This module was, in fact, a little more difficult for me than the procedural one, because I knew nothing about OOP until now — so everything was new. I had to adapt and change the way I see code. I learned concepts that took me a while to fully understand, such as inheritance and polymorphism. The module was assessed through an individual presentation (a coded Online Shopping System, with a PowerPoint and a recorded video explaining the concepts) and an end-of-module individual test combining code and written answers.

So What? — Analysis

Although the subject was harder to grasp at first, I found that programming with OOP was actually much easier in practice. While procedural programming is simpler overall, OOP makes everything easier when it comes to the actual act of programming — especially in terms of reasoning through a problem. Having just built a fully procedural project in the previous module, I could feel how the procedural fundamentals underpinned my understanding of object-oriented design.

This was my strongest programming module so far. A large part of that came from lessons carried over from earlier modules — particularly referencing, which I now applied confidently from the start, citing sources such as PEP 8, the Python documentation, and academic texts directly within my code. Being almost a year into the course, I can see how I am gradually adapting and improving — not just my technical skills, but my understanding of how to learn and apply what I have learned.

In my Online Shopping System, I demonstrated the four pillars of OOP: abstraction through Abstract Base Classes (an Orderable interface), encapsulation through private attributes with property getters and setters, inheritance through a PremiumCustomer subclass, and polymorphism through method overriding of the discount logic, dispatched at runtime.

What Next? — Action Plan

I feel much more prepared to program now, and even more curious about other areas, such as data and other programming languages. I will certainly use OOP for the rest of my life in programming. That said, having only just started Web Application Development, I do not yet know how to implement these concepts within HTML and CSS — and connecting object-oriented thinking to web technologies is something I look forward to exploring. With both procedural and object-oriented paradigms now in my toolkit, I am better equipped to choose the right approach for each situation.

Section 04

Professional Skills Matrix & Action Plan

An assessment of the skills gained or enhanced during this module, with evidence and a forward-looking action plan.

Skill Before After Evidence Action Plan
Object-oriented Design None Proficient Online Shopping System using all four OOP pillars Apply OOP to larger systems and connect it to web technologies
Abstraction & Interfaces None Competent Abstract Base Classes (Orderable, User) defining contracts Explore protocols and more advanced interface design
Encapsulation None Proficient Private attributes with property getters/setters and validation Apply consistently to protect data integrity in all systems
Inheritance & Polymorphism None Competent PremiumCustomer subclass; runtime method overriding Practise designing class hierarchies that avoid over-engineering
Referencing in Code Developing Proficient Confident Harvard citations from the start (PEP 8, docs, texts) Maintain as standard practice; broaden to peer-reviewed sources
Technical Presentation Basic Competent Slides and recorded video explaining the coded system Reduce content density for clearer delivery (per feedback)
Strengths
  • Strongest programming module so far (79% total)
  • Applied referencing confidently from the start — a carried-over lesson
  • Strong grasp of all four OOP pillars in a working system
  • Connects procedural foundations to object-oriented thinking
Weaknesses
  • OOP concepts (inheritance, polymorphism) took time to grasp at first
  • Could include more critical evaluation of trade-offs (per feedback)
  • Presentations can be dense — clarity could be improved
Opportunities
  • OOP is foundational for almost all modern software development
  • Growing curiosity about data and new programming languages
  • Both paradigms now available to choose the best tool per task
Threats
  • Connecting OOP to web technologies is still unfamiliar territory
  • Full-time shift work continues to limit study time