Object-Oriented Techniques (OOP)
Course
Materials

Object-Oriented Techniques (oop)- Course Information

We propose an object-oriented design / Object-Oriented  Techniques (oop) of software structures for both automating analytical processes and managing the data generated from these processes. For automation and data management, we develop two models for building the programs used in these two areas. We describe the advantages of these object-oriented models over traditional design. Thus, standardization, scalability, and independence of the programs are assured by object-oriented Techniques (oop). Characteristics such as inheritance, polymorphism, and encapsulation are used to achieve the goals of automation and data management, as well as providing a new way of representing analytical concepts in automation and data management.

Course objectives:

  • At the end of the course, students will be able to:
    Identify the principles and techniques of the Object-Oriented (OO) approach.
  • Employ concepts, techniques, and methods related to the OO approach and CASE tools supported by the OO methods in software development.

Textbook & References

Textbook:

Simon Bennett, Steve McRobb and Ray Farmer. 2006. Object-Oriented Systems Analysis and Design using UML. 3rd Edition, McGraw-Hill.

References:

Curtis H. K. Tsang, Clarence S. W. Lau, Ying K. Leung. 2005. Object-Oriented Technology: From Diagram to Code with Visual Paradigm for UML. McGraw-Hill.
Stephen R. Schah. Introduction to Object-Oriented Analysis and Design with UML and the Unified Process. McGraw-Hill, 2004.

About KSRA

The Kavian Scientific Research Association (KSRA) is a non-profit research organization to provide research / educational services in December 2013. The members of the community had formed a virtual group on the Viber social network. The core of the Kavian Scientific Association was formed with these members as founders. These individuals, led by Professor Siavosh Kaviani, decided to launch a scientific / research association with an emphasis on education.

KSRA research association, as a non-profit research firm, is committed to providing research services in the field of knowledge. The main beneficiaries of this association are public or private knowledge-based companies, students, researchers, researchers, professors, universities, and industrial and semi-industrial centers around the world.

Our main services Based on Education for all Spectrum people in the world. We want to make an integration between researches and educations. We believe education is the main right of Human beings. So our services should be concentrated on inclusive education.

The KSRA team partners with local under-served communities around the world to improve the access to and quality of knowledge based on education, amplify and augment learning programs where they exist, and create new opportunities for e-learning where traditional education systems are lacking or non-existent.

History

An object contains encapsulated data and procedures grouped together to represent an entity. The 'object interface' defines how the object can be interacted with. An object-oriented program is described by the interaction of these objects. Object-oriented design is the discipline of defining the objects and their interactions to solve a problem that was identified and documented during object-oriented analysis.

What follows is a description of the class-based subset of object-oriented design, which does not include object prototype-based approaches where objects are not typically obtained by instantiating classes but by cloning other (prototype) objects. Object-oriented design is a method of design encompassing the process of object-oriented decomposition and a notation for depicting logical and physical as well as state and dynamic models of the system under design.

Input (sources) for object-oriented design

The input for object-oriented design is provided by the output of the object-oriented analysis. Realize that an output artifact does not need to be completely developed to serve as the input of object-oriented design; analysis and design may occur in parallel, and in practice, the results of one activity can feed the other in a short feedback cycle through an iterative process. Both analysis and design can be performed incrementally, and the artifacts can be continuously grown instead of completely developed in one shot.

Some typical input artifacts for object-oriented design are:

  • Conceptual model: The result of object-oriented analysis, it captures concepts in the problem domain. The conceptual model is explicitly chosen to be independent of implementation details, such as concurrency data storage.
  • Use case: A description of sequences of events that, taken together, lead to a system doing something useful. Each use case provides one or more scenarios that convey how the system should interact with the users called actors to achieve a specific business goal or function. Use case actors may be end-users or other systems. In many circumstances use cases are further elaborated into use case diagrams. Use case diagrams are used to identify the actor (users or other systems) and the processes they perform.
  • System sequence diagram: A system sequence diagram (SSD) is a picture that shows, for a particular scenario of a use case, the events that external actors generate, their order, and possible inter-system events.
  • User interface documentation (if applicable): Document that shows and describes the look and feel of the end product's user interface. It is not mandatory to have this, but it helps to visualize the end-product and therefore helps the designer.
  • Relational data model (if applicable): A data model is an abstract model that describes how data is represented and used. If an object database is not used, the relational data model should usually be created before the design, since the strategy chosen for object-relational mapping is an output of the OO design process. However, it is possible to develop the relational data model and the object-oriented design artifacts in parallel, and the growth of an artifact can stimulate the refinement of other artifacts.

Object-oriented concepts

The five basic concepts of object-oriented design are the implementation level features that are built into the programming language. These features are often referred to by these common names:

  • Object/Class: A tight coupling or association of data structures with the methods or functions that act on the data. This is called a class, or an object(an object is created based on a class). Each object serves a separate function. It is defined by its properties, what it is, and what it can do. An object can be part of a class, which is a set of objects that are similar.
  • Information hiding: The ability to protect some components of the object from external entities. This is realized by language keywords to enable a variable to be declared as private or protected to the owning class.
  • Inheritance: The ability for a class to extends or override the functionality of another class. The so-called subclass has a whole section that is derived (inherited) from the superclass and then it has its own set of functions and data.
  • Interface (object-oriented programming): The ability to defer the implementation of a method. The ability to define the functions or methods' signatures without implementing them.
  • Polymorphism(specifically, Subtyping): The ability to replace an object with its subobjects. The ability of an object-variable to contain, not only that object but also all of its subobjects.

Designing concepts

  • Defining objects, creating a class diagram from the conceptual diagram: Usually, map an entity to class.
  • Identifying attributes.
  • Use design patterns(if applicable): A design pattern is not a finished design, it is a description of a solution to a common problem, in a context.[1] The main advantage of using a design pattern is that it can be reused in multiple applications. It can also be thought of as a template for how to solve a problem that can be used in many different situations and/or applications. Object-oriented design patterns typically show relationships and interactions between classes or objects, without specifying the final application classes or objects that are involved.
  • Define application framework (if applicable): Application framework is usually a set of libraries or classes that are used to implement the standard structure of an application for a specific operating system. By bundling a large amount of reusable code into a framework, much time is saved for the developer, since he/she is saved the task of rewriting large amounts of standard code for each new application that is developed.
  • Identify persistent objects/data (if applicable): Identify objects that have to last longer than a single runtime of the application. If a relational database is used, design the object-relational mapping.
  • Identify and define remote objects (if applicable).