Object-Oriented Software Engineering with Java
4.5 (129 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
561 students enrolled

Object-Oriented Software Engineering with Java

Mastering Object Oriented Programming with Java
4.5 (129 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
561 students enrolled
Created by Anis Koubaa
Last updated 4/2019
English
English [Auto-generated]
Current price: $139.99 Original price: $199.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 6.5 hours on-demand video
  • 2 downloadable resources
  • 3 coding exercises
  • Full lifetime access
  • Access on mobile and TV
  • Assignments
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Build classes and creates objects using Java to promote code reuse
  • Build a large software using inheritance, abstract classes, encapsulation, polymorphism, and Interfaces
  • Recognize object-oriented concepts for large software development
  • Solve advanced software development problems using Object Oriented concepts
  • Develop and use generic classes to promote software reuse
  • Use effective tools for Java project management (Netbeans, GitHub)
Course content
Expand all 26 lectures 06:27:23
+ Introduction
1 lecture 07:02

This is an introductory video that provides an overview about the course.

Preview 07:02
+ General Concepts Reviews in Java
2 lectures 27:07
Arrays vs ArrayLists
11:37
In this exercise, you will practice about files and ArrayList.
Course Statistics using ArrayLists and Files
1 question
+ Week 1. Classes and Objects
9 lectures 02:10:31

After completing this lecture, the student will identify the shortcoming of procedural programming approaches in efficiently writing reusable programs. 

Preview 05:53

This lecture introduces the concepts of object-oriented programming and illustrate it through an example. We build the class Student, then we creates objects from this class. We compare the program developed with the previous one in terms of code efficiency and code size. 

Preview 16:38

This lecture presents how constructors are defined and used to create objects and to initialize the attributes of the class. 

Preview 12:49

This is a short quiz about constructors

Quiz on constructors
2 questions
Data hiding and Encapsulation
27:41

This quiz provides a practice on data hiding and data validation

Quiz on Data Hiding and Encapsulation
3 questions

This lecture introduces the concept of the keyword this which is used to provide a reference to the class. It is needed to be used when the name of the attribute of the class is the same as the name of the parameter of the method. 

Preview 10:42
Quiz on "this" keyword
4 questions

This lecture presents the concept of class-wide variable and how it created as a static member of the class.

Class-wide variables (i.e. Static Members)
10:50

This lecture discusses the topic of constructor overloading that defining more than one constructor for a class. It also presents the use of the keyword this to call an existing constructor of a class and reduce the code size.

Constructors Overloading
12:04

This quiz provides a review on the concept of constructors overloading 

Quiz on Constructors Overloading
3 questions

This video lecture presents the toString() method and how it is used to create a String representation of an object.

the toString() method
12:15
Composition: the Has-A relationship
21:39

This quiz provides a review about the concept of composition and has-a relationship

Composition: Has-A Relationship
5 questions
Rectangle Class
1 question

The objective of this quiz is to practice the concepts you have learned on classes and objects. 

General Quiz on Classes and Objects
11 questions
In this assignment, you will apply the concepts of classes, objects and composition to develop a class for Patient.
Patient Class
2 questions
In this assignment, we would like to implement an object-oriented program to represent a distance sensor class. A distance sensor is a small device that is able to estimate the distance to an object. An example of distance sensor in shown in this figure (just for illustration).
The Distance Sensor Class
3 questions
In this assignment, you will implement an object-oriented program to represent an image. You will understand how to create a class, constructors, use data hiding concepts and write methods for the class. You will also get some intuition on how an image is represented in a computer vision field.
The Image Class
4 questions
+ Week 2. Inheritance
3 lectures 29:00
What is inheritance?
03:37

In this video, you will understand the limitation of developing an application of classes that are related by an inheritance relationship without using inheritance concepts. 

Without inheritance
05:23

This quiz will review the limitation of development without using inheritance

Quiz 02 on inheritance
1 question

This video illustrates how inheritance helps in reducing the code size and promote software reuse. It will also show how to define a constructor of a subclass and how to override methods of the superclass in the subclass. 

Using Inheritance
20:00

This quiz provides a review of the inheritance concepts

Quiz: Concepts of inheritance
8 questions
Student class using Inheritance
1 question
In this assignment, you will practice about the concept of inheritance.
Hospital Class
4 questions
In this assignment, we will create a Java application for different Sensors, which will improve the program you did in Distance Sensor Assignment. First, have a look at the class diagram that you will implement, and then read the explanation of these classes below.
Inheritance of Sensor Classes
5 questions
In this assignment, you will implement an object-oriented program to represent a image class hierarchy. You will use the concept of inheritance to write an efficient code that captures the relation between the different classes.
The Image Class Hierachy
6 questions
+ Week 3. Polymorphism
8 lectures 02:01:12

In this video, I provide an introduction to the concept of polymorphism and explain its foundation. 

What is polymorphism?
08:45
Compilation Time vs. Runtime
12:12

In this lecture, I present the concept of downcasting and explain how it is useful to access the methods of a subclass from an object declared using a superclass. I also explain the use of instanceof keyword to check if an object is an instance of certain class. 

Downcasting
11:40
Shape Class Hierarchy
1 question
But, why polymorphism is important? polymorphic processing
22:21
Abstract classes
24:12

This quiz intends to review the concepts of abstract classes

Abstract Classes
2 questions
In this assignment, you will practice about polymorphic processing.
Assignment: Polymorphic Processing
5 questions
Interfaces
13:21
Contract-First Development Approach
09:10
The Comparable and Comparator Interfaces
19:31
In this assignment, yo will implement a waiting queue for clients and tasks objects and make it comparable.
Assignment on Comparable and Comparator
7 questions
We have built the sensor application using concrete classes and inheritance. In this assignment exam, we will improve our code using interfaces and you follow a contract-first approach for the development.
Design by Contract: IoT Application
9 questions
In the previous assignment, we have built the Image Application using concrete classes and inheritance. In this assignment, you will improve the code using interfaces and you wil follow a contract-first approach for the development, and then you will compare this approach to the previous approach.
Design-by-Contract: Image Application
20 questions
+ Week 4. Generic Classes
2 lectures 26:54

In this lecture, you will learn about generic methods and how effective they are in writing methods that can be applied to different types.

Generic Methods
13:37

In this lecture, you will learn about generic classes and how effective they are in writing classes that can be applied to different types.

Generic Classes
13:17
In this assignment, you will have some practicing exercises on Generic Classes and Methods
Assignment of Generic Classes and Methods
4 questions
+ Week 5. Design Patterns
1 lecture 20:01
Design Patterns
20:01
In this assignment, you will use design patterns and generic classes to improve the development of the Image application. Note that we will use the same classes that we developed in previous assignment as a starting point.
Image Application using Design Patterns and Generics
5 questions
In this assignment, you will practice about the concepts you learned on design patters.
Assignment: Design Patterns
6 questions
+ Week 6. Java Collection Framework Exercises
0 lectures 00:00
In this exam, we will use generic classes to improve the development of the Shop application. The classes are provided to you as attachment.
Shop Application
6 questions
In this assignment, we will develop the IoT App like in the project. First of all, IT IS VERY IMPORTANT TO SEE THE NEW CLASS STRUCTURE AND DATA STRUCTURES USED IN THIS EXAM. WITHOUT GOOD UNDERSTANDING YOU CANNOT RESPOND EASILY TO THE QUESTIONS.
IoT Application
4 questions
In this assignment, we will improve more the development of the real estate application by using design patterns. First of all, IT IS VERY IMPORTANT TO SEE THE NEW CLASS STRUCTURE AND DATA STRUCTURES USED IN THIS EXAM. WITHOUT GOOD UNDERSTANDING YOU CANNOT RESPOND EASILY TO THE QUESTIONS.
Real Estate Application Design Patterns (with video solution)
5 questions
In this assignment, we will build a Facebook Graph application based on the Graph interfaces provided in the NetBeans project. Consider the interfaces provided as the contract of your application, which include, the EdgeFactory, IEdge, IGraph, IGraphLogger, IVertex, and VertexFactory.
Facebook Graph Application (with video solution)
6 questions
+ Week 7. Recursion Exercises
0 lectures 00:00
In this section, you will practice about recursion.
Recursion Exercises
6 questions
+ Final Problems for Revision
0 lectures 00:00
Problem Fall 2018. Respond to the questions in the doc files.
RealEstateAnalytics Problem (Fall 2018)
1 question
Iot App Spring 2018. Respond to the questions in the doc files.
IoT Application Problem (Spring 2018)
1 question
Requirements
  • The course assumes that the student has a knowledge of the basic programming concepts with Java, including loops, methods, conditional statements, etc.
Description

Course Updates

  • Sep 5: Adding ArrayList lecture (Section II) and one programming assignment on files and ArrayList


Overview

The course provides a comprehensive coverage of object-oriented programming (OOP) concepts using Java programming language. OOP is the key paradigm that allows software reuse and that facilitates the development of complex and large-scale software. The course first starts with providing a clear understanding why OOP is important. We then dive into the main OOP concepts including encapsulation, inheritance, and polymorphism. We also present generic classes and design patterns which further demonstrate an additional software abstraction. All along the course, we show how OOP allows software engineers to develop complex software by making high-level abstractions starting from very general classes down to more concrete classes. 

To better illustrate the concepts, each chapter contains several hands-on activities, namely: (1) Quizzes which help reviewing the main theoretical concepts presented in the lectures, (2) short coding exercises where the student can apply the concepts he learned on simple use cases, (3) programming assignments, which  provide more thorough activities aiming at consolidating the understanding of the learner and guide him to master the concepts presented in the lectures. All hands-on activities have written and video solutions. 

In addition, during the course, the student will work on one application which he will improve from one chapter to another so that he can observe how programming concepts he learned can be applied to improve a certain application. In this course, we consider an application to process images for the programming assignment. There is no pre-requisite needed about images to do the exercises, as it is just a simple application context for the programming assignment. 

The course was designed to provide the learners with a solid background on software engineering using object-oriented programming concepts!

I wish you an excellent learning experience!

Who this course is for:
  • Beginner/Intermediate Software Developers
  • Software Engineering Students
  • Computer Science Students
  • Information Systems Students
  • Beginners Java Developers