Object-Oriented Software Engineering
Using Java
(First Module)
|
This program is sponsored by |
||
|
|
PITA-Palestine |
|
Why Object-Oriented Is Important
Object-oriented analysis, design, and programming is a radical departure from the procedural model. Its focus is not on the procedures of the modeled world, but on the objects appearing in it. Objects are natural things to model because that's what the world is made of. Planes, dogs, and computers are all objects. Even abstract concepts, such as a priority queue, can be thought of as an object.
What all objects have in common is that they have state and behavior. For example, the state of a plane can be partially indicated by its speed and location, but its behavior might be represented by its ability to change altitude.
Another feature of objects is that they are self-contained; in other words, they are modular. When modeling a car engine, for example, you can focus on the characteristics of each object in the engine as opposed to the flow of gas and energy through it. The object model breaks the engine down into a series of components that can be described on their own terms, as opposed to what they are in a complex global view of things. Instead of writing a single huge procedure describing what's going on in the car, you can focus on how each of the individual elements behaves.
Finally, objects have the quality of being hierarchical. A large complex object, a house, for example, consists of other objects, such as its physical structure, the electrical system, the plumbing, and so forth. These are in turn made up of yet other objects, such as a chimney, the light switches, and a sink. These can be broken down into yet smaller components such as wood, wires, and pipes. By modeling a system based on hierarchy, you can use the model of smaller, more easily understood objects, such as a wire, to construct more complex objects, such as a light switch. Since the switch is now seen as an object that consists of yet simpler objects, its complexity is easier to understand and manage.
In object-oriented systems, objects communicate through a message-passing mechanism. When an object receives a message, it may change its state and behavior as part of the response. For example, sending a message of "play" to a CD player object might result in the CD playing a music track. This message-passing aspect of objects translates very nicely into the needs of network programming, where transactions are carried out by the mechanism of messages. It is particularly well suited to distributed systems because objects communicate by a standard message-passing mechanism, in which the actual location of the objects becomes less important. If your object needs to talk to an object, it isn't particularly important if it is on your computer or a remote host. All that really counts is that the object gets your message.
Java as an Object-Oriented Language
Java is unusual for an object-oriented programming language in that it is "objects all the way down."
Unlike C++, which is a confusing combination of objects and functions, everything in Java is an object. Strings are objects, numbers are objects, threads are objects, even applets are objects.
Because of this, Java has all the helpful features of object-oriented systems just described. Its core constructs of classes, objects, methods, and instance variables are, by their very nature, managed in a modular fashion. Java's support for inheritance allows you to build new classes from other classes.
Each class you construct becomes a tool that can be used to create yet more complex classes.
Java's particular object-oriented implementation allows it to have yet even more desirable features than those already discussed. It has a runtime garbage collector that removes objects from memory that you no longer need. No longer will your program run out of memory because you forgot to explicitly delete an object. The garbage collector, which your program doesn't even have to be aware of, does this for you. Furthermore, Java's total orientation toward objects removes another construct that has been a blight of programmers-the pointer. Java hides almost all aspects of memory management from the programmer.
This training program targets software developers and programmers who wish to acquire the skills necessary for designing and developing applications using Object Oriented technology.
It will cover the principles of object-oriented programming, object oriented analysis and design, and some topics regarding distributed OOP.
The prerequisites of this program is computer science background with knowledge of programming language (preferred C).
The program is broken into two modules: module I, which is 40 contact hours, is an Introduction to Object Oriented concepts as applied to Java Programming. In Module II, advanced topics in OOP and distributed OOP will be covered.
Trainees will be required to complete and pass a module before proceeding to the next.
2- Module Outline
This module is an introduction of the concepts of object oriented that are necessary to develop an object-oriented way of thinking. This module is going to cover main elements of the object model, relationship between classes, Inheritance, polymorphism, object landscapes and lifetimes, Multi threading, object concurrency, persistence, and exception handling. It also discusses the application of the OO concepts covered in the first module to Java Programming Language. The module covers manipulating objects through handles, creating objects, scoping, creating classes, Methods, arguments and return values, building a Java program, Execution control, Array Initialization, Packages, Interface and implementation.
3- Sessions Description
1- Introduction to objects (6 hours)
Includes an overview to the progress of abstraction, the object's interface, the hidden implementation, reusing the implementation, reusing the interface (inheritance), overriding functionality, interchangeable objects (polymorphism), object lifetimes, exception handling, multithreading and persistence.
2- Using objects (3 hours)
Includes dealing with objects through handles, creating objects, destroying objects, scope of objects, creating data types, methods, arguments, return values and building Java program.
3- Initialization and cleanup (3 hours)
Includes Constructors, method overloading, cleanup and garbage collection, member initialization and array initialization.
4- Controlling program flow (3 hours)
Includes Java operators including precedence, assignment, mathematical, relational, logical, bitwise, shift and casting operators. It also includes execution control including conditional statements (if-else, switch), repetitive statements (for, while, and do-while).
5- Hiding the implementation (3 hours)
Covers the way the code is packaged together and how some parts are exposed and others are hidden, including Package keyword, Java access specifiers including friendly, public, private an protected keywords. Also includes interface and implementation and class access.
6- Reusing classes (3 hours)
The concepts of inheritance and composition, and how to re-use existing classes, while adding or changing to their functionality. It includes also the fina, initialization and class loading wiinheritance.
7- Polymorphism (9 hours)
Includes upcasting, overriding vs. overloading, abstract classes and methods, interfaces, inner classes, constructors and polymorphism and designing with inheritance.
8- Holding objects (3 hours)
Including Arrays, collections, enumerators, vectors, bitsets, stacks and hashtables.
9- Passing and returning objects (3 hours)
Includes passing handles around, making local copies, controlling cloneability and read-only classes
4- Training Schedule
Training will be on Mondays and Wednesdays for six consecutive weeks from Mon. 27-Sep. 1999 to Wed. 10-Nov. 1999.
Daily schedule:
|
|
Time |
Room # |
|
Mondays |
15:00-18:00 |
|
|
Wednesdays |
15:00-18:00 |
|
5- About the Following Module:
|
Candidates who successfully complete all the requirements for this program may join the next module (Level 2). This module will cover the following topics:
This training program will qualify participants for the official Sun Certified Java Programmer for JDK |
6- Trainers Backgrounds:
Ayman Masri: (Sessions 1-5)
B.Sc. Electrical engineering. 3 years experience in software development. Currently Software project manager at IDS SoftwareSystems, Ramallah.
Marwan Totah: (Sessions 6-9)
Marwan Totah: (Parts 6-9)
CEO Bisan Systems Ltd.
BSc. Computer Science.
18 Years working experience in Software Development and Networking.
Board member of the Palestinian Information Technology Association (PITA).
7- Registration
For Information please contact:
IT Unit
Birzeit University
Tel: (02) 998-2012, 998-2072
email: ITunit@birzeit.edu
Web: http://www.birzeit.edu/itunit/OOP.html