Haramaya University
Haramaya Institute of Technology
School of Electrical & Computer Engineering
Course Code ECEg3101
Course Title Object Oriented Programming
Degree Program BSc. in Electrical and Computer Engineering
Module Name Computer Architecture and Programming
Module Code ECEgM3103
ECTS Credits 5
Student work load Lecture Tutorial Laboratory/Practical Home Study
32 -- 32 80
Course Objectives/ By the end of this course, students will be able to:
Leaning Outcomes Familiarize themselves with key concepts and terminologies in object-oriented
programming (OOP).
Understand the differences and relationships between classes and objects.
Apply knowledge to work with pure object-oriented programming languages
such as Java
Differentiate between application programs and applet programs.
Develop classes for real-world objects based on their behaviors and states.
Create subclasses and identify the behaviors and states of the superclass that
can be inherited.
Implement mechanisms to safeguard superclasses from unauthorized access.
Gain foundational skills in web and Windows programming, including the use
of graphical user interfaces (GUIs).
Use the Unified Modeling Language (UML) to represent complex real-world or
software systems in a simplified model.
Prepare for software development projects utilizing the object-oriented
paradigm.
Course Description The main focus of this course is to study and understand the object oriented
programming concepts: objects, classes, interfaces and packages. In doing so we
need to use any object oriented programming language that helps us to implement
the essential features of object oriented programming, namely Encapsulation
(Information hiding or data abstraction), Polymorphism and Inheritance. After these
basics the course then aims to help the students understand the nuts and bolts of a
pure object oriented programming language, e.g. JAVA, C++ or C#, by writing
some application and applet programs. Then using any of these languages we need
to know how could we create class, object, interface and package also need to
understand some useful predefined classes, interfaces and packages. Model real-
world objects using their state and behaviour Then it deals with web design in
HTML and how could we add some programmable features using Java Applets into
the web page that will help us solve the problem. Finally to provide a solid
foundation for developing software using the object-oriented paradigm it is
important to know the Unified Modelling Language (UML) and the different class
relations and their UML representation
Ability to understand and use key concepts and terminologies in object-
oriented programming (OOP).
Skills (such as on Proficiency in distinguishing and relating classes and objects within OOP.
software) to acquire or Competence in designing and developing classes for real-world objects based
required on their behaviors and states.
Capability to create subclasses and manage inheritance of behaviors and states
from superclasses.
1|Page
Haramaya University
Haramaya Institute of Technology
School of Electrical & Computer Engineering
Course Code ECEg3101
Course Title Object Oriented Programming
Implementation of secure mechanisms to protect superclasses from
unauthorized access.
Practical skills in web and Windows programming, including the development
of graphical user interfaces (GUIs).
Readiness to develop software using the object-oriented programming
paradigm.
Contact
Week Course Contents
Hrs
2 10
Chapter One: Introduction to OOP
1.1 Overview of Object-Oriented Programming
History and evolution of OOP
Key principles: Encapsulation, Abstraction, Inheritance, Polymorphism
Comparison between structured / procedural programming and OOP.
1.2 Development Environment Setup: Java: JDK installation
1.3 Introduction to Java elements: variables and their declaration; Introduction to
classes and objects; input/output
2 10
Chapter Two: Basic Concepts of OOP
2.1 Classes and Objects: Definition and syntax in Java; Creating and using objects
and Methods; conditional statements and loops; Arrays; The Static and final
key words; Composition
2.2 Encapsulation
2.2.1 Data Hiding and Access Modifiers
Java: Public, private, protected
2.2.2 Getters and Setters
Implementing getters and setters in Java
Benefits of encapsulation
2 10
Chapter Three: Inheritance and Polymorphism
3.1. Inheritance
3.1.1. Concept of Inheritance
3.1.2. Super-classes and Subclasses;
Types of inheritance: Single, multiple, multilevel, hierarchical
3.1.3. Implementing Inheritance
Java: Using the extends keyword
3.1.4. Method Overriding
Overriding methods and the super keyword in Java
3.2. Polymorphism
2|Page
Haramaya University
Haramaya Institute of Technology
School of Electrical & Computer Engineering
Course Code ECEg3101
Course Title Object Oriented Programming
3.2.1. Understanding Polymorphism
Compile-time (method overloading) vs. runtime (method overriding)
3.2.2 Implementing Polymorphism
Method overloading in Java
Method overriding in Java
Final Methods and Classes;
3.2.3. Interfaces and Abstract Classes
Java interfaces and abstract classes
2 10
Chapter Four: Composition vs. Inheritance and Error Handling & Exceptions
4.1. Understanding Composition
Differences between composition and inheritance
Benefits of composition
4.2. Practical Examples
Building a class using composition
Real-world scenarios
4.3. Error Handling and Exceptions
4.3.1. Exception Handling Basics
Java: try-catch-finally blocks
Exception classes
4.3.2. Creating Custom Exceptions
Defining and raising custom exceptions
2 10
Chapter Five: Advanced OOP Concepts and GUI Programming
5.1 Design Patterns Overview
5.2 Practical Implementation
Implementing design patterns in Java
Comparison of pattern implementations
5.3 UML (Unified Modeling Language)
Introduction to UML
Creating class diagrams for Java
5.4. GUI Programming
5.4.1. Introduction to GUI Concepts
Event-driven programming principles
5.4.2. GUI in Java
3|Page
Haramaya University
Haramaya Institute of Technology
School of Electrical & Computer Engineering
Course Code ECEg3101
Course Title Object Oriented Programming
Using Swing or JavaFX for GUI development
Overview of Swing Components; Swing vs Awt; Introduction to Event
Handling; Common GUI Even Types and Listener Interfaces; Using the
swing componens(JButton, JTextfield, JList etc)
Building a simple application
2 10
Chapter Six: File I/O
6.1 Reading and Writing Files
File handling in Java ([Link])
6.2. Practical Examples
Implementing file I/O in a project
Pre-requisites SECT 1082: Computer Programming
Semester V
Status of Course Compulsory
Teaching & Learning
Lectures, Lab, tutorial, class exercises
Methods
Assessment/Evaluation&
Mid 30%, Project (20%), Final 50 %
Grading System
All students are expected to abide by the code of conduct of students Senate
Legislation of our University throughout this course.
Academic dishonesty, including cheating, fabrication, and plagiarism will not
be tolerated
Class activities will vary day to day, ranging from lectures to discussions.
Students will be active participants in the course.
Course policy You are required to submit and present the assignments provided according to
the time table indicated.
80 % of class attendance is mandatory! Please try to be on time for class. I will
not allow you enter if you are late more than five minutes
Active participation in class is essential and it will have its own value in your
grade
Cell phones MUST be in flight mode or off before entering the class.
Java How to Program, 6th edition, [Link]- [Link], Pearson
Education, 2005
References Java: An Introduction to Problem Solving and Programming, 5th ed. W.
Savitch and F. Carrano, Prentice Hall, 2008 3
Absolute Java, 5th Edition, [Link], Addison Wesley,2012
4|Page