Click here to go to the home page

CS212: Object Oriented Analysis and Design
July - November, 2016

 

Objectives

  • To understand the Object-based view of Systems
  • To develop robust object-based models for Systems
  • To inculcate necessary skills to handle complexity in software design

Learning Outcomes

  • Ability to analyze and model software specifications.
  • Ability to abstract object-based views for generic software systems.
  • Ability to deliver robust software components.

Course content

  • Introduction to OOAD: Basic notion of objects, Multiple Views of Objects, Contrasting with Procedural Computation, Client-Server/Message Passing, Principles of OOAD, Abstraction Hierarchy, Decomposition Hierarchy, Member-Of
  • Overview of Object-based Modeling: Unified Modified Language (UML): Structural Diagrams, Behavioural Diagrams
  • Overview of C++: Procedural Extension of C, Objects, Classes and Encapsulation, Overloading, Inheritence & Polymorphism, Type Casting.
  • Design-by-Contract: Introduction to Concepts of Design-by-Contract, Separation of Interface and Implementation by Design, Illustration of Design-by-Contract through Data Structure examples like Stack, Queue
  • Standard Library of C++: Input / Output Streams, Strings: string, Data structures: Sequence containers, Container adaptors, Associative containers, Unordered associative containers
  • Handling the Breakdown of Design-by-Contract: Exceptions to handle Contract violations, Exception handling in C, Exception handling in C++, Exception Classes in C++ Standard Library
  • Templates: Function Templates, Class Templates, Partial Template Instantiation, Generic, Programming through Template Meta Programming
  • Design Patterns: Introduction to DP through Iterator Pattern, DP Schema and Pattern Formulation, Common Patterns, Iterator, Singleton, Visitor, Abstract Factory, Factory Method
  • Generic Programming in Standard Library of C++: Iterators, functional operators, algorithms

Text Books

  • T1. Scott Meyers, Effective C++: 50 Specific Ways to Improve Your Programs and Designs, Addison-Wesley.
  • T2. Scott Meyers, More Effective C++: 35 New Ways to Improve Your Programs and Designs, Pearson Education.
  • T3. Bjarne Stroustrup, The C++ Programming Language, Addison-Wesley.
  • T4. Andrei Alexandrescu, Modern C++ Design, Pearson Education India.
  • T5. Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison Wesley.
  • T6. Russ Miles and Kim Hamilton , Learning UML 2.0: A Pragmatic Introduction to UML, O'Reilly.

Reference Books

  • R1. Nicolai M. Josuttis, The C++ Standard Library: A Tutorial and Reference (2nd Ed), Addison-Wesley Professional, 2012
  • R2. Matthew H. Austern, Generic Programming and the STL: Using and Extending the C++ Standard Template Library, Addison-Wesley Professional, 1999
  • R3. David Abrahams and Aleksey Gurtovoy, C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond, Addison-Wesley Professional, 2004

Lecture slides

Sl. No. Topic Lecture slide Demo
1. Recap of Programming Techniques download source code for demos shown in classroom
2. Classes and Objects download Demo to understand creating and using class
3. Constructor and Destructors download source code for demos shown in classroom
4. Polymorphism - I download source code for demos shown in classroom
5. Polymosphism - II download source code for demos shown in classroom
6. Relationship between Classes download source code for demos shown in classroom
7. Runtime Polymorphism download source code for demos shown in classroom
8. Exception Handling download source code for demos shown in classroom
9. Console I/O download source code for demos shown in classroom
10. File I/O download source code for demos shown in classroom
11. Generic Programming download source code for demos shown in classroom
12. Standard Template Library download source code for demos shown in classroom
13. STL Container download source code for demos shown in classroom source code for demos shown in classroom
14. Iterator download source code for demos shown in classroom
15. Algorithms download source code for demos shown in classroom
16. Namespace download source code for demos shown in classroom
17. Object Oriented Modeling download -

Lab Assignements
Assignment No. Topic Problem Statement
1. Recap of Prgramming concepts Download problem statement
2. Class and Objects with Dynamic Allocations Download problem statement
3. Function and Operator Overloading Download problem statement
4. Inheritance Download problem statement
5. Mid Semester Lab exam Download problem statement
6. Virtual Function Download problem statement
7. Templates and Exception Handling Download problem statement
8. File Handling Download problem statement
9. STL Download problem statement
10. End Semester Lab Exam Download problem statement
Microsoft Visual Studio Team Services (VSTS)
Commands to be executed in a sequence to get the source code from the VSTS server, implement, and upload.
  1. mkdir
  2. cd
  3. git clone (from VSTS online)
  4. cd
  5. ls -l (To check the downloaded files)
  6. Now implement the .cpp files.
  7. git.checkout -b
  8. git branch
  9. git status
  10. git add
  11. git commit -m " Implemented cpp files"
  12. git push origin
  13. Go to VSTS online portal.
  14. Under the code tab, click on Pull Rrequest.