Object Oriented Analysis  «Prev  Next»

Operating System Requirements

Lesson 3Operating System Course Requirements
Objective Course Requirements

Platform Support

Object-oriented programming (OOP) is a paradigm that is independent of the operating system, and this concept pertains to the design and structure of the code. However, the execution of the software is contingent upon the underlying system's ability to interpret and execute the code, which is not inherent to OOP itself. One crucial factor for running any software, including object-oriented software, on an operating system is the programming language in which the software is written. There are numerous languages that support OOP, including but not limited to, Python, Java, C++, Ruby, etc. The interpretability of these languages on the target operating system is a prerequisite for executing the software.
For interpreted languages such as Python or Ruby, the operating system needs to have the appropriate interpreter installed. On the other hand, for compiled languages like C++ or Java, the code must be compiled into a format that the target operating system can run. Notably, Java uses a special strategy where code is compiled into an intermediate "bytecode", which is then interpreted or compiled at runtime by the Java Virtual Machine (JVM). This makes Java programs exceptionally portable across different operating systems as long as a JVM is available.
Another factor to consider is the use of system-specific APIs (Application Programming Interfaces) or libraries. If a software utilizes these, it might need additional effort to ensure portability across different operating systems. In some cases, software developers might need to write different portions of code specifically tailored to the operating systems they are targeting.
In conclusion, while object-oriented software can technically be executed on any operating system, the execution relies on the programming language's compatibility, the availability of the appropriate interpreter or compiler, and the software's dependence on system-specific APIs or libraries. It is the developer's responsibility to ensure these conditions are met for the target operating system.
You can take this course on Windows, Macintosh, or Linux platforms. In other words with any machine or device that has a browser.

A Brief History of Unix

The Macintosh started out with a single-tasking operating system that allowed simple switching between applications through an application called the MultiFinder. More recent versions of the Mac OS have supported multiple applications running simultaneously, but it was not until the landmark release of OS X that true multitasking arrived in the Macintosh world. With OS X, Macintosh applications run in separate memory areas; the Mac is a true multiuser system that also includes proper file-level security. To accomplish these improvements, OS X made the jump from a proprietary underlying operating environment to Unix. OS X is built on top of Darwin, a version of Unix based on BSD 4.4 Lite, FreeBSD, NetBSD, and the Mach microkernel. Unix itself was invented more than 40 years ago for scientific and professional users who wanted a very powerful and flexible OS. It has evolved since then through a remarkably circuitous path, with stops at Bell Telephone Labs, UC Berkeley, and research centers in Australia and Europe, and also received some funding from the US Department of Defense Advanced Research Projects Agency (DARPA).

Because Unix was designed by experts for experts, it can be a bit overwhelming at first. But after you get the basics you will start to appreciate some of the reasons to use Unix. For example: It comes with a huge number of powerful programs, and you can get many others for free on the Internet.
Unix is pretty much the same, regardless of whether you are using it on OS X, FreeBSD, or Linux, or even in tiny embedded systems or on a giant supercomputer. After you read this book, you will not only know how to harness the power of Unix, but you will also be ready to use many other kinds of Unix-based computers without having to learn new commands for each one.


All you need to complete this course on Object Oriented Design and Programming is a text editor or Google Docs.
Later in this module, the details of exercise submission are outlined.

Object-Oriented Analysis

(OOP) Object-oriented Programming

What is object-oriented programming (OOP)?

We define it as follows:
Object-oriented programming is a method of implementation in which programs are organized as cooperative collections of objects, each of which represents an instance of some class, and whose classes are all members of a hierarchy of classes united via inheritance relationships. There are three important parts to this definition: (1) Object-oriented programming uses objects, not algorithms, as its fundamental logical building blocks (the part of hierarchy we introduced in Chapter 1); (2) each object is an instance of some class; and (3) classes may be related to one another via inheritance relationships
  1. A program may appear to be object-oriented, but if any of these elements is missing, it is not an object-oriented program. Specifically, programming without inheritance is distinctly not object-oriented; that would merely be programming with abstract data types.
  2. By this definition, some languages are object-oriented, and some are not. Stroustrup suggests that if the term "object-oriented language" means anything, it must mean a language that has mechanisms that support the object-oriented style of programming well.
  3. A language supports a programming style well if it provides facilities that make it convenient to use that style. A language does not support a technique if it takes exceptional effort or skill to write such programs; in that case, the language merely enables programmers to use the techniques.

From a theoretical perspective, one can fake object-oriented programming using non-object-oriented programming languages like Pascal, but it is horribly ungainly to do so. Cardelli and Wegner thus say: A language is object-oriented if and only if it satisfies the following requirements:
  1. It supports objects that are data abstractions with an interface of named operations and a hidden local state.
  2. Objects have an associated type [class].
  3. Types [classes] may inherit attributes from supertypes [superclasses].

In the next lesson, Object Oriented course resources will be discussed.