Chapter One Introduction to Object- Oriented Programming
1 Prepared by Tesfa K. 01/05/2022
Outline o Programming Languages o Programming Paradigm and its types o Over View of OOP Principles o Over View of Java Programming
2 Prepared by Tesfa K. 01/05/2022
Programming Languages (PL)
A computer program is a set of instructions used to
operate a computer to produce a specific result. Writing computer programs is called computer programming. The languages used to create computer programs are called programming languages.
3 Prepared by Tesfa K. 01/05/2022
How to write Program ? o Programming Language Is a formal constructed language designed to I. communicate instructions to a machine, particularly a computer. II. Is used to create programs to control the behavior of a machine o Hundreds of computer languages are in use today. o Programming Languages are classifies as: I. Machine Language II. Assembly Language III. High Level Language
4 Prepared by Tesfa K. 01/05/2022
Machine Language Machine language is the “natural language” of a computer and it is defined by its hardware design. Machine languages generally consist of strings of numbers (1s and 0s) - that instruct computers to perform their most elementary operations one at a time. Machine languages are machine dependent. Machine language program is also called object code Such languages are difficult for humans to write a program. Machine-language programming was simply too slow, tedious and error prone for most programmers. Example o Machine Instruction Machine Operation 00000000 Stop Program 00000001 Turn bulb fully on
5 Prepared by Tesfa K. 01/05/2022
Assembly Language Assembly language uses English-like abbreviations/ mnemonic codes to represent elementary operations instead of sequence of 0s and 1s Example:-ADD for addition , SUB for subtraction etc. Translator programs called assemblers were developed to convert assembly-language programs to machine language Since computer system only understand the language of 0s and 1s . Although such code is clear to humans, but it is not understandable to computers until translated to machine language.
6 Prepared by Tesfa K. 01/05/2022
Assembly Language … Computer usage increased rapidly with the arrival of assembly languages, but programmers still had to use many instructions to accomplish the simplest tasks. For example, the following section of an assembly- language program adds overtime pay to base pay and stores the result in gross pay: load basepay add overpay store grosspay
7 Prepared by Tesfa K. 01/05/2022
High Level Language To speed up the programming process, high-level languages were developed in which single statements could be written to accomplish a number of tasks. High-level languages allow programmers to write instructions that look almost like everyday English and contain commonly used mathematical notations. For example a payroll program written in a high- level language might contain a statement such as grossPay = basePay + overTimePay
8 Prepared by Tesfa K. 01/05/2022
High Level Language … o High level language program is also called source code. o Program written in high level languages are much easier to maintain and modified . Translator programs called compilers and Interpreter convert high-level language programs into machine language. Some examples include BASIC, FORTRAN, Java, C,C++, Pascal and Microsoft’s .NET
9 Prepared by Tesfa K. 01/05/2022
Programming Paradigm o Paradigm can also be termed as method to solve some problem or do some task. o Programming paradigm is an approach to solve problem using some programming language. o There are lots for programming language that are known but all of them need to follow some strategy when they are implemented and this methodology/strategy is paradigms. o The two most known programming paradigms are : I. Structured programming II. Object oriented programming
10 Prepared by Tesfa K. 01/05/2022
Structured programming o In Structured Programming a programmer who is faced with some problem must identify a computing task that needs to be performed in order to solve the problem. o Programming then consists of finding a sequence of instructions that will accomplish that task. o Structured Programming focuses on process/ logical structure and the data required for that process. o Structured Programming is also known as Modular Programming o In Structured Programming, Programs are divided into small self contained functions.
11 Prepared by Tesfa K. 01/05/2022
Structured programming … Structured programming follows top-down approach. In Structured programming data was separate from the code. Structured Programming is less secure as there is no way of data hiding. Structured Programming provides less reusability, more function dependency. Less abstraction and less flexibility. C and Pascal are examples of procedural programming languages
12 Prepared by Tesfa K. 01/05/2022
Programs with Structural Programming 1. Unrestricted Access
o Functions have unrestricted access to global data.
2. Real-World Modeling
o Unrelated functions and data, the basics of the procedural
paradigm, provide a poor model of the real world. 3. Difficult of Creating New Data Types
o Traditional languages are not extensible because they
will not let you create new data types.
13 Prepared by Tesfa K. 01/05/2022
Object-Oriented Programming (OOP) It is a modern programming paradigm that allows the Programmer to model a problem in a real-world as an object. Allows us to decompose a problem into a number of entities called objects and then build data and functions (methods) around them. Hence, programs are divided into what are known as objects Binds data more closely to the functions that operate on it and protects it from unintentional modification by other functions. Hence, Object Oriented Programming is more secure as having data hiding feature. Follows bottom-up approach in program design
14 Prepared by Tesfa K. 01/05/2022
Object Oriented Programming… An object represents an entity in the real world that can be distinctly identified. Everywhere you look in the real world you see objects - people, animals, plants, cars, planes, buildings, computers and so on. Humans think in terms of objects. Telephones, houses, traffic lights and water are just a few more objects. All objects have attributes (e.g., a car has a size, shape, color and weight), and they all exhibit behaviors (e.g., a car accelerates, brakes and turns). Humans learn about existing objects by studying their attributes and observing their behaviors. Comparisons can be made, for example, between babies and adults and between humans and chimpanzees.
15 Prepared by Tesfa K. 01/05/2022
Object Oriented Programming… OOP models object by their attributes and behaviors just as we describe real-world objects. OOP also takes advantage of class relationships, where objects of a certain class, such as a class of vehicles, have the same characteristics (cars, trucks, little red wagons and taxi have much behaviors in common). OOP also models communication between objects. Just as people send messages to one another; objects also communicate via messages.
16 Prepared by Tesfa K. 01/05/2022
Object Oriented Programming… For example, suppose you want to write a program that automates the video rental process for a local video store. The two main objects in this problem are the video and the customer. Then, specify for each object the relevant data and possible operations to be performed on that data. For a video object, the data might include: movie name, starring actors, producer, production company, number of copies in stock Some of the operations on a video object might include: checking the name of the movie. reducing the number of copies in stock by one after a copy is rented. incrementing the number of copies in stock by one after a customer returns a copy.
17 Prepared by Tesfa K. 01/05/2022
Object Oriented Programming… OOP give emphasis for data rather than procedure Data is not allowed to move freely around a system, but it is tied closely to the functions that operate on it.(i.e. Data is hidden from external functions) Data is protected because the data belonging to an object can only be accessed and modified by the methods of that object. Different objects can 'talk' to each other through their methods. In this way, Object A cannot directly modify data belonging to Object B – but it can call a method of Object B that in turn modifies the data.
18 Prepared by Tesfa K. 01/05/2022
What is Java Java is high level programming language developed by a team led by James Gosling at Sun Microsystems. Originally called Oak, it was designed in 1991 for use in consumer electronic applications. In 1995, renamed Java, it was redesigned for developing Internet applications as well. Java is modeled after C and C++, and much of the syntax and object-oriented structure is borrowed from C++. Java is simple, object oriented, secure, portable and high performance.
19 Prepared by Tesfa K. 01/05/2022
What is Java… Java can be used to create two types of programs: applications and applets. Java applications are more general programs written in the Java language. Java applications don’t require a browser to run.(desktop application or stand alone application) Applets are Java programs that are downloaded over the World Wide Web and executed by a Web browser on the reader’s machine (web based application) Java offers two ways of creating dynamic web content: Applets-which are Java programs which are run by a client computer’s web browser Servlets-which are Java programs which are run by the web server.
20 Prepared by Tesfa K. 01/05/2022
What is Java… Java programs are platform independent. Java programs are portable - it is possible to move java programs from one computer system to another. Java promise: “Write once, run everywhere”. Java differs from other programming languages in that it is both compiled and interpreted language. Java is Powerful: massive libraries.
21 Prepared by Tesfa K. 01/05/2022
Typical Java Development Environment There are five phases in creating and executing a Java application using a Java development environment. They are:- Create/edit compile load verify and execute
22 Prepared by Tesfa K. 01/05/2022
Phase 1: Creating a Program It consists of writing a java source code and editing a file with an editor program or IDE. Integrated development environments (IDEs) - provide tools that support the software development process, including editors - for writing and editing programs and debuggers - for locating logic errors. Popular IDEs include:- Eclipse (www.eclipse.org) NetBeans (www.netbeans.org) JBuilder (www.borland.com) JCreator (www.jcreator.com) BlueJ (www.blueJ.org) jGRASP (www.jgrasp.org) jEdit (www.jedit.org). Then Make any necessary corrections and save the program on a secondary storage device, such as your hard drive. A file name ending with the .java extension indicates that the file contains Java source code.
23 Prepared by Tesfa K. 01/05/2022
Phase 2: Compiling a Java Program into Bytecodes Use the command javac to compile a program. For example, to compile a program called Welcome.java, you would type javac Welcome.java in the command window of your system If the program compiles, the compiler produces a .class file called Welcome.class that contains the compiled version of the program. The Java compiler translates Java source code into bytecodes
24 Prepared by Tesfa K. 01/05/2022
Phase 2: Compiling a Java Program into Bytecodes… Bytecodes are a set of instructions that looks like a machine codes, but it is not specific to any one processor or platform. Bytecodes are executed by the Java Virtual Machine (JVM) —a part of the JDK. A virtual machine (VM) is a software application that simulates a computer, but hides the underlying operating system and hardware from the programs that interact with the VM. Unlike machine language, which is dependent on specific computer hardware, bytecodes are platform-independent instructions So, Java’s bytecodes are portable
25 Prepared by Tesfa K. 01/05/2022
Phase 3: Loading a Program into Memory In Phase 3, the program must be placed in memory before execution-which is known as loading. Hence the class loader takes the .class files containing the program’s bytecodes and transfers them to primary memory.
26 Prepared by Tesfa K. 01/05/2022
Phase 4: Bytecode Verification In Phase 4, the bytecode verifier examines their bytecodes to ensure that they are valid and do not violate Java’s security restrictions. Java enforces strong security, to make sure that Java programs arriving over the network do not damage your files or your system (as computer viruses and worms might).
27 Prepared by Tesfa K. 01/05/2022
Phase 5: Execution In Phase 5, the JVM executes the program’s bytecodes. The JVM is invoked by the java command. For example, to execute a Java application called Welcome, you would type the command java Welcome in a command window to invoke the JVM. In early Java versions, the JVM was simply an interpreter for Java bytecodes. This caused most Java programs to execute slowly because the JVM would interpret and execute one bytecode at a time. Today’s JVMs typically execute bytecodes using a combination of interpretation and so-called just-in-time (JIT) compilation. 28 Prepared by Tesfa K. 01/05/2022 Phase 5: Execution… Today’s JVMs analyzes the bytecodes searching for hot spots— parts of the bytecodes that execute frequently. For these parts, a just-in-time (JIT) compiler - known as the Java HotSpot compiler- translates the bytecodes into the underlying computer’s machine language. Thus Java programs actually go through two compilation phases One in which source code is translated into bytecodes Second is during execution- the bytecodes are translated into machine language for the actual computer on which the program executes.
29 Prepared by Tesfa K. 01/05/2022
Typical Java Development Environment
30 Prepared by Tesfa K. 01/05/2022
The Java Language Specification, API and JDK Computer languages have strict rules of usage. If you do not follow the rules when writing a program, the computer will be unable to understand it. The Java language specification is defines the syntax and semantics of the Java programming language. The application program interface (API) contains predefined classes and interfaces for developing Java programs. The Java language specification is stable, but the API is still expanding.
31 Prepared by Tesfa K. 01/05/2022
The Java Language Specification, API and JDK Java comes in three editions: 1. Java Standard Edition (Java SE) - can be used to develop client-side standalone applications. 2. Java Enterprise Edition (Java EE) can be used to develop server-side applications.. 3. Java Micro Edition (Java ME) - can be used to develop applications for mobile devices, such as cell phones.
32 Prepared by Tesfa K. 01/05/2022
The Java Language Specification, API and JDK There are many versions of Java SE. Each version has a Java Development Toolkit (JDK). For Java SE 6, the Java Development Toolkit is called JDK 1.6 (also known as Java 6 or JDK 6). JDK consists of a set of separate programs, each invoked from a command line, for developing and testing Java programs. Besides JDK, you can use a Java development tool (e.g., Net- Beans, Eclipse, and Jcreator) - for rapidly developing Java programs.
33 Prepared by Tesfa K. 01/05/2022
Basic principles of OOP Object Object is a software bundle that has State and Behavior and it occupies memory. We can also define Object as a set of data items (fields) with operations (methods ) to manipulate them. Example: dogs have states (name, color, hungry, breed) and behaviors (bark, fetch, and wag tail). Object combines data and operations in one place. The state of an object (also known as its properties or attributes) is represented by data fields with their current values. A circle object, for example, has a data field radius, which is the property that characterizes a circle. A rectangle object has data field’s width and height, which are the properties that characterize a rectangle.
34 Prepared by Tesfa K. 01/05/2022
Basic principles of OOP Object… The behavior of an object (also known as its actions) is defined by methods. Method is an action performed by an object To invoke a method within an object is to ask the object to perform an action. For example, you may define a method named getArea() for circle objects. A circle object may invoke getArea() to return its area. objects interact and communicate with each other by sending messages to each other.
35 Prepared by Tesfa K. 01/05/2022
Basic principles of OOP… Class A class is a template or blueprint that defines what an object’s data fields and methods will be. It defines the states and the behaviors common to all objects of a certain kind. Class is a collection of objects of similar type. Classes are user-defined data types & behave like the built-in types of programming language. An object is an instance of a class. E.g Ibsa is an instance of a Student You can create many instances of a class. Creating an instance is referred to as instantiation. The terms object and instance are often used interchangeable.
36 Prepared by Tesfa K. 01/05/2022
Basic principles of OOP… Class Declaration The syntax for a simple class declaration is modifiers class class-name { body } Where the optional modifiers may be one or more of the three keywords { public, abstract, final } Class-name is any valid identifier Body is a sequence of declarations of variables, constructors, and methods Modifier Meaning Public - It is accessible from all other classes Abstract- The class cannot be instantiated Final -No subclasses can be declared A class that is declared final cannot be a superclass.
37 Prepared by Tesfa K. 01/05/2022
Basic principles of OOP… Abstraction Also known as information hiding. Ignore details when appropriate Think about what a method/object/class does, not how it does it. Objects have the property of information hiding. This means that objects may know how to communicate with one another across well-defined interfaces, but normally they are not allowed to know how other objects is implemented-implementation details are hidden within the objects themselves. It is one of the fundamental ways to handle complexity. Example driving a car effectively E.g. Sort(insertion, selection, bubble)
38 Prepared by Tesfa K. 01/05/2022
Basic principles of OOP… Encapsulation OOD encapsulates (i.e., wraps) attributes and operations (behaviors) into objects - an object’s attributes and operations are intimately tied together. Is the mechanism that binds together code and the data object manipulates. Put related things in the same place I.e. group related data and operations in an object Each object has its own data and knows how to use it Hide internal representation/implementation Deny external access to internal fields/methods
39 Prepared by Tesfa K. 01/05/2022
Basic principles of OOP… Inheritance Inheritance is a form of software reuse in which, new classes of objects are derived by absorbing characteristics of existing classes and adding unique characteristics of their own. Inheritance is the process by which one object acquires the properties of another object. Classical Inheritance: “is-a kind of” relationship. In inheritance, an object of a subclass can also be treated as an object of its superclass. For example, a car is a vehicle. Example: fruits and types of fruit (an apple is a type of fruit) Goal of inheritance: code reuse
40 Prepared by Tesfa K. 01/05/2022
Basic principles of OOP… Polymorphism The ability to take more than one form. The same word or phrase can be mean different things in different contexts One instruction means different things to different agents In terms of the OOP, this means that a particular operation may behave differently for different sub-classes of the same class. Technically: many objects can implement same interface in their own way. In Java, two or more classes could each have a method called output Each output method would do the right thing for the class that it was in. One output might display a number whereas a different one might display a name.
41 Prepared by Tesfa K. 01/05/2022
A Simple Java Program Let us begin with a simple Java program that displays the message “Welcome to Java!” on the console. Console refers to text entry and display device of a computer. 1 public class Welcome { 2 public static void main(String[] args) { 3 // Display message Welcome to Java! to the console 4 System.out.println("Welcome to Java Programming!"); 5 } 6 }
42 Prepared by Tesfa K. 01/05/2022
Description of the program Line 1 defines a class. public class Welcome { Every program in Java consists of at least one class definition that is defined by you - the programmer. These classes are known as programmer-defined classes, or user-defined classes. The class keyword introduces a class definition in Java and is immediately followed by the class name.(In this example, the class name is Welcome.) Every class we define begins with the public keyword Keywords (or reserved words) are reserved for use by java and are always spelled with all lowercase letters. By convention, class names start with an uppercase letter. A pair of braces in a program forms a block that groups the program’s components. In Java, each block begins with an opening brace ({) and ends with a closing brace (}). Every class has a class block that groups the data and methods of the class.
43 Prepared by Tesfa K. 01/05/2022
Description of the program… Line 2 defines the main method. In order to run a class, the class must contain a method named main. public static void main( String args[] ) It is a part of every Java application. Java applications begin executing at main. The parentheses after main indicate that main is a program building block called a method. Java class definitions normally contain one or more methods. For a Java application class, exactly one of those methods must be called main. otherwise, the java interpreter will not execute the application. Methods are able to perform tasks and return information when they complete their tasks. The void keyword indicates that this method will perform a task (displaying a line of text, in this program), but will not return any information when it completes its task. The left brace, {, on line 2 begins the body of the method definition. A corresponding right brace, }, must end the method definition’s body
44 Prepared by Tesfa K. 01/05/2022
Description of the program… Line 3 is a comment that documents what the program is and how it is constructed. Comments help programmers to communicate and understand the program. They are not programming statements and thus are ignored by the compiler. In Java, comments are preceded by two slashes (//) on a line, called a line comment, or enclosed between /* and */ on one or several lines, called a block comment. When the compiler sees //, it ignores all text after // on the same line. When it sees /*, it scans for the next */ and ignores any text between /* and */. Here are examples of comments: // This application program prints Welcome to Java! /* This application program prints Welcome to Java! */ /* This application program prints Welcome to Java! */
45 Prepared by Tesfa K. 01/05/2022
Description of the program… Line number 4 System.out.println( "Welcome to Java Programming!" ); instructs the computer to perform an action, namely to print the string of characters contained between the double quotation marks. This statement prints a message "Welcome to Java Programming!" command window from which the Java application executes. (line 4). A string is sometimes called a character string, a message or a string literal. We refer to characters between double quotation marks generically as strings. White-space characters in strings are not ignored by the compiler. Every statement in Java ends with a semicolon (;), known as the statement terminator.
46 Prepared by Tesfa K. 01/05/2022
Creating, Compiling, and Executing a Java Program When you save your java file, the file name must be the class name followed by the “.java” file-name extension. For our application, the file name is Welcome.java. All Java class definitions are stored in files ending with the file-name extension “.java.” To compile the program, we open a command window, change to the directory where the program is stored and type javac Welcome.java
If the program contains no syntax errors, the preceding
command creates a new file called Welcome1.class containing the Java bytecodes that represent our application.
47 Prepared by Tesfa K. 01/05/2022
Creating, Compiling, and Executing a Java Program These bytecodes will be interpreted by the java interpreter when we tell it to execute the program. In the command prompt type java Welcome1 to launch the java interpreter and indicate that it should load the “.class” file for class Welcome. Note that the “.class” file-name extension is omitted from the preceding command; otherwise the interpreter will not execute the program. The interpreter automatically calls method main. Next, the statement on line 4 of main displays “Welcome to Java Programming!”
48 Prepared by Tesfa K. 01/05/2022
Creating, Compiling, and Executing a Java Program This section demonstrates how to create, compile, and run Java programs from a command window.