Object-Oriented M Programming

Course Length: Three (3) days
Prerequisites: This course is designed for the person who has an analytical background. Some M programming experience is helpful
Method of Instruction: Public or on-site lecture/workshop instruction

This course is designed to build a solid foundation for the subsequent course offerings in object design, implementation and management.

First, the student is introduced to the evolution of software, justifying object orientation as the next step. Next, a solid conceptual foundation is developed, layer by layer, culminating in a definitional foundation that includes objects, data abstraction, classes, inheritance and messaging.

Once the conceptual foundation is laid, these concepts are used to show how real world problems can be modeled, from the simple to the complex.

Next, the conceptual model is expanded to elaborate upon object messaging and information hiding. The concept of polymorphism is covered and stressed as a desirable implementation goal. Messaging is conveyed as the object oriented mechanism that obviates strict procedural patterns, providing flexible communications between objects.

At this point, classes and relationships are elaborated upon. The student is taken through several illustrative examples.

Next, the student will learn about object oriented databases. Examples will be developed that illustrate the storage and retrieval of objects.

Before moving from the foundation material to building a framework for design and implementation, the benefits and risks of the object oriented approach will be discussed.

The next phase of this course elaborates upon building a framework of conceptual tools, general and specific The general tools fall into four conceptual areas:

Evolutionary - the concepts that assist the designer in building objects, levels of abstraction and finally applications. This concept enables the designer to build for change

Patterns - that assist the designer in building a set of working heuristics. Working from specific to general, organizing the system design around the Model-View-Controller paradigm are only a couple of examples.

Polymorphism - the process of building a common language of messages that stresses uniformity of interface between objects as well as understanding the true intent of that interface. This aspect of the conceptual framework is key to developing a fully reusable system.

Communications - determines what objects talk to each other and what their roles are. Where polymorphism builds a common language that the objects understand, communications combine these common language elements into a procedure that embodies flexibility.

An extensive set of conceptual tools will be illustrated and demonstrated such as concerns, call backs, attached stores to name only a few.

Finally, the class will be organized into project teams and set to work applying conceptual framework to a simple, generic problem. Upon its completion, the classes attention will be turned to solving a more complex problem in their user domain.

Since this course is designed to create a foundation and framework for the three subsequent courses, it is concluded by outlining the goals of the next course and making the necessary interim assignments.

Upon successful conclusion of the course, the student should be able to: