Skip to main content
Hany Ammar
Professor Emeritus, Computer Science and Electrical Engineering
  • Home
  • Courses
  • Introduction to Object-Oriented Programming in C++

Introduction to Object-Oriented Programming in C++

CpE 391D

Prerequisites

A working knowledge of a high-level programming language is required. Students with no previous experience in C will need to put some extra effort to familiarize themselves with the relevant basic concepts in C.

Text

C++ How To Program: Introducing Object-Oriented Design with UML, Deitel& Deitel, Third Edition, Prentice-Hall, 2001.

Related Material

Web-based course notes and tutorials:

Description and Objectives

This is a three-credit hour project-based laboratory-oriented course aimed at learning the fundamentals of object-oriented design and implementation in C++. The objectives of the course are to have students identify and practice the object-oriented programming concepts and techniques, practice the use of C++ classes and class libraries, modify existing C++ classes, develop C++ classes for simple applications, and practice the concepts of object-oriented analysis and design and design patterns and frameworks by developing a C++ based project.

Course Topics

  1. Introduction to the Object-oriented Programming Concepts
  2. C++ Program structure
  3. C++ Data Types
  4. Functions, Scope and the Free Store
  5. The C++ Class
  6. Static Class members and the this pointer
  7. Operator Overloading
  8. Class Derivation and Inheritance
  9. Virtual Functions and Polymorphism
  10. Templates
  11. Object-Oriented Analysis and Design
  12. Object-Oriented Testing Techniques

Lab Assignments

Each assignment will be one week except when mentioned otherwise.

Lab Report Guidelines

  1. Introduction to OOP and the C++ Program Structure.
  2. Data Types I, Pointers, references and arrays (two weeks)
  3. Data Types II, Structs and Classes.
  4. The C++ class, Sparse Matrix Application.
  5. Nested Classes and discrete event simulation of a client server model (two weeks).
  6. The this pointer, Static data members and operator overloading.
  7. Class derivation, and inheritance.
  8. Multiple inheritance, and Polymorphism.
  9. Project: Object-Oriented Analysis and Design (two weeks)
  10. Project: Implementation and testing (two weeks)

Grading

Attendance: 5%
Lab Assignments (assignments 1-8): 35%
Final Project (assignments 9-10): 25%
Final Examination: 35%

Lab Policy

Students will be divided into groups of two. Each group will be required to submit a report (see lab report guidelines) on each lab assignment. The report should be very brief and should discuss the concepts learned in the lab and includes well commented and documented programs.

Project Requirements

Models are used to estimate the performance of systems when measurements are impossible (e.g., because the system is still in the initial phases of development) or impractical (e.g., because of the human or the machine resources required). Queuing networks have become important as performance models of a variety of systems where system performance is usually significantly affected by contention for resources. These systems include among others data communication systems where resources consist of communication channels and channel bandwidth, computing systems where resources consist of processors, memory and I/O devices, manufacturing systems where resources consist of manufacturing tools.

This is a four-week project in which each lab group will develop a queuing network simulator using object-oriented programming in C++. This project consists of developing a set of classes for queuing network models definition and simulation. The minimum requirements for the package are as follows:

  1. The classes shall allow the user to define a queuing network model consisting of a network of service facilities, sources of clients where clients are introduced to the network with a given arrival rate, and sinks where clients exit the network after getting service from a sequence of service facilities. A service facility consists of a queue and an array of servers. The queue type shall be specified by the queuing discipline (i.e., FIFO, LIFO, etc.). The number of servers as well as the average service time (assuming a uniform random distribution) shall be specified for each service facility. Links are used to connect a source output to the input of a set of service facilities, or an output of a facility to the input of a set of service facilities or to a sink (a feedback link from the output of a facility back to its input is allowable). A probability distribution must be defined on the set of out going links from a facility which specify how a client will be routed to one of these links, if a distribution is not specified, a uniform distribution shall be assumed.
  2. The classes shall support checking the network, reporting any missing or open connection and simulating the network for a given total simulation time. The output performance measures from the simulation should include the throughput (number of clients/second) and the average time delay experienced by a client at each network sink.