Anda di halaman 1dari 60

OOP Concepts

I ntroduction to Program m ing 2


Topics
Object-Oriented Concepts

Java Program Structure

I ntroduction to Program m ing 2


2
Object-Oriented Concepts
Object-Oriented Design
Focuses on object and classes based on real world scenarios
Emphasizes state, behavior and interaction of objects
Advantages:

I ntroduction to Program m ing 2


Faster development
Increased quality
Easier maintenance
Enhanced modifiability
Increase software reuse

Class
Allows you to define new data types
Blueprint

3
Object-Oriented Concepts
Object
An entity that has a state, behavior and identity with a well-defined
role in problem space
An actual instance of a class

I ntroduction to Program m ing 2


Created everytime you instantiate a class using the new keyword.
Student registration system example

Attribute
Data element of an object
Stores information about the object
A.K.A. Data member, instance variable, property, data field
Student registration system example
4
Object-Oriented Concepts
Method
Describes the behavior of an object
Also called a function or a procedure
Student registration system example

I ntroduction to Program m ing 2


Constructor
Method-like
For creating and initializing a new object
Not members of an object

5
Object-Oriented Concepts
Package
Grouping of classes and/or subpackages
Analogous to a directory

I ntroduction to Program m ing 2


Encapsulation
Principle of hiding design or implementation information not relevant
to the current object

Abstraction
Ignoring aspects of a subject not relevant to the current purpose to
focus on those that are

6
Object-Oriented Concepts
Inheritance
Relationship between classes wherein one class is the superclass or
the parent class of another
Refers to the properties and behaviors received from an ancestor

I ntroduction to Program m ing 2


Also know as a "is-a" relationship

SuperHero

FlyingSuperHero UnderwaterSuperHero

7
Object-Oriented Concepts
Polymorphism
"poly" means many while "morph" means form
Ability of an object to assume may different forms

I ntroduction to Program m ing 2


Interface
Contract in the form of a collection of method and constant
declarations
Implementing class promises to follow the contract.

8
Java Program Structure:
Declaring Classes
Syntax
<classDeclaration> ::=
<modifier> class <name> {
<attributeDeclaration>*

I ntroduction to Program m ing 2


<constructorDeclaration>*
<methodDeclaration>*
}
where
Modifier
Refers to an access modifier or other types of modifiers
Name
Is an identifier for the name of the class
9
Java Program Structure:
Declaring Classes
1 class SuperHero {
2 String superPowers[];
3 void setSuperPowers(String superPowers[]) {
4 this.superPowers = superPowers;

I ntroduction to Program m ing 2


5 }
6 void printSuperPowers() {
7 for (int i = 0; i < superPowers.length; i++) {
8 System.out.println(superPowers[i]);
9 }
10 }
11 }
10
Java Program Structure:
Declaring Attributes
Syntax:
<attributeDeclaration> ::=
<modifier> <type> <name> [= <default_value>];

I ntroduction to Program m ing 2


<type> ::=
byte | short | int | long | char | float | double
| boolean | <class>

11
Java Program Structure:
Declaring Attributes
1 public class AttributeDemo {
2 private String studNum;
3 public boolean graduating = false;
4 protected float unitsTaken = 0.0f;

I ntroduction to Program m ing 2


5 String college;
6 }

12
Java Program Structure:
Declaring Methods
Syntax:
<methodDeclaration> ::=
<modifier> <returnType> <name>(<parameter>*) {
<statement>*

I ntroduction to Program m ing 2


}
<parameter> ::=
<parameter_type> <parameter_name>[,]

13
Java Program Structure:
Declaring Methods
1 class MethodDemo {
2 int data;
3 int getData() {
4 return data;

I ntroduction to Program m ing 2


5 }
6 void setData(int data) {
7 this.data = data;
8 }
9 void setMaxData(int data1, int data2) {
10 data = (data1>data2)? data1 : data2;
11 }
12 } 14
Java Program Structure:
Declaring a Constructor
Syntax:
<constructorDeclaration> ::=
<modifier> <className> (<parameter>*) {
<statement>*

I ntroduction to Program m ing 2


}
where
Modifier
Can be any access modifier but not other types of modifiers.

Default constructor
No arguments
Empty body 15
Java Program Structure:
Declaring a Constructor
1 class ConstructorDemo {
2 private int data;
3 public ConstructorDemo() {
4 data = 100;

I ntroduction to Program m ing 2


5 }
6 ConstructorDemo(int data) {
7 this.data = data;
8 }
9 }

16
Java Program Structure:
Instantiating a Class
Syntax:
new <constructorName>(<parameters>)

Example:

I ntroduction to Program m ing 2


1 class ConstructObj {
2 int data;
3 ConstructObj() {
4 /* initialize data */
5 }
6 public static void main(String args[]) {
7 ConstructObj obj = new ConstructObj();
8 } 17
9 }
Java Program Structure:
Accessing Object Members

Dot notation:
<object>.<member>

I ntroduction to Program m ing 2


Some examples:
String myString = new String(My String);
//Access length method
System.out.println(Length: + myString.length());

int intArr = {1, 2, 3, 4, 5};


//Access length attribute
System.out.println(Length: + intArr.length);
18
Java Program Structure:
Accessing Object Members
1 class ConstructObj {
2 int data;
3 ConstructObj() {
4 /* initialize data */
5 }
6 void setData(int data) {
7 this.data = data;
8 }
9 public static void main(String args[]) {
10 ConstructObj obj = new ConstructObj();
11 obj.setData = 10; //access setData()
12 System.out.println(obj.data); //access data
13 }
14 } I ntroduction to Program m ing 2 19
Java Program Structure:
Packages
Syntax for indicating that the code belongs to a package:
<packageDeclaration> ::=
package <packageName>;

I ntroduction to Program m ing 2


Syntax for importing other packages:
<importDeclaration> ::=
import <packageName.elementAccessed>;

Source code format:


[<packageDeclaration>]
<importDeclaration>*
<classDeclaration>+ 20
Java Program Structure:
Packages
1 package registration.reports;
2 import registration.processing.*;
3 import java.util.List;
4 import java.lang.*; //imported by default

I ntroduction to Program m ing 2


5 class MyClass {
6 /* details of MyClass */
7 }

21
Java Program Structure:
The Access Modifiers

I ntroduction to Program m ing 2


22
Java Program Structure:
Encapsulation
Hide members by making them private
Example
1 class Encapsulation {
2 private int secret;
3 public boolean setSecret(int secret) {
4 if (secret < 1 || secret > 100)
5 return false;
6 this.secret = secret;
7 return true;
8 }
9 public getSecret() {
10 return secret;
11 }
I ntroduction to Program m ing 2 23
12 }
Java Program Structure:
Inheritance
Creating a child class or a subclass:
Use extends in declaring the class
Syntax:
class <childClassName> extends <parentClassName>

I ntroduction to Program m ing 2


A class can only extend one parent class

24
Java Program Structure:
Inheritance
1 import java.awt.*;
2

3 class Point {
4 int x;

I ntroduction to Program m ing 2


5 int y;
6 }
7

8 class ColoredPoint extends Point {


9 Color color;
10 }

25
Java Program Structure:
Overriding Methods
Subclass defines a method whose signature is identical to a
method

in the superclass

Signature of a method

I ntroduction to Program m ing 2


Information found in the method header definition
Return type
Method name
Parameter list of the method

Different from method overloading!

26
Java Program Structure:
Overriding Methods
1 class Superclass {
2 void display(int n) {
3 System.out.println("super: " + n);
4 }

I ntroduction to Program m ing 2


5 }
6

7 class Subclass extends Superclass {


8 void display(int k) {
9 System.out.println("sub: " + k);
10 }
11 }
12
27
13 // continued...
Java Program Structure:
Overriding Methods
14 class OverrideDemo {
15 public static void main(String args[]) {
16 Subclass SubObj = new Subclass();
17 Superclass SuperObj = SubObj;

I ntroduction to Program m ing 2


18 SubObj.display(3);
19 ((Superclass)SubObj).display(4);
20 }
21 }

28
Java Program Structure:
Overriding Methods
Version of method called
Based on actual data type of the object that invoked the method

Access modifier for the methods need not be the same

I ntroduction to Program m ing 2


Access modifier of the overriding method
Same access modifier as that of the overridden method
Less restrictive access modifier

29
Java Program Structure:
Overriding Methods
1 class Superclass {
2 void overriddenMethod() {
3 }
4 }

I ntroduction to Program m ing 2


5 class Subclass1 extends Superclass {
6 public void overriddenMethod() {
7 }
8 }
9 class Subclass2 extends Superclass {
10 void overriddenMethod() {
11 }
12 }
30
13 //continued...
Java Program Structure:
Overriding Methods
14 /* class Superclass {
15 void overriddenMethod() {
16 }
17 } */

I ntroduction to Program m ing 2


18 class Subclass3 extends Superclass {
19 protected void overriddenMethod() {
20 }
21 }
22 class Subclass4 extends Superclass {
23 private void overriddenMethod() {
24 }
25 }
31
Java Program Structure:
Abstract Classes and Methods
Syntax:
abstract <modifier> <returnType> <name>
(<parameter>*);

I ntroduction to Program m ing 2


Class containing an abstract method should be declared
abstract
abstract class <name> {
/* constructors, fields and methods */
}

32
Java Program Structure:
Abstract Classes and Methods
abstract keyword is not for:
Constructor
static method

I ntroduction to Program m ing 2


abstract classes cannot be instantiated

Classes that extends an abstract class:


Should implement all abstract methods
Otherwise, the subclass itself should be declared abstract

33
Java Program Structure:
Abstract Classes and Methods
1 abstract class SuperHero {
2 String superPowers[];
3 void setSuperPowers(String superPowers[]) {
4 this.superPowers = superPowers;
}

I ntroduction to Program m ing 2


5

6 void printSuperPowers() {
7 for (int i = 0; i < superPowers.length; i++) {
8 System.out.println(superPowers[i]);
9 }
10 }
11 abstract void displayPower();
12 }
34
13 //continued...
Java Program Structure:
Abstract Classes and Methods
1 class FlyingSuperHero extends SuperHero {
2 void displayPower() {
3 System.out.println("Fly...");
4 }
}

I ntroduction to Program m ing 2


5

7 class Spiderman extends SuperHero {


8 void displayPower() {
9 System.out.println("Communicate with sea" +
10 " creatures...");
11 System.out.println("Fast swimming ability...");
12 }
35
13 }
Java Program Structure:
Interface
Syntax:
<interfaceDeclaration> ::=
<modifier> interface <name> {
<attributeDeclaration>*

I ntroduction to Program m ing 2


[<modifier> <returnType> <name>
(<parameter>*);]*
}

Members are public when the interface is declared public

36
Java Program Structure:
Interface
Interface attributes:
Implicitly static and final
Must be initialized

I ntroduction to Program m ing 2


Modifiers:
Access modifiers: public, package
Must be initialized

Implementing an interface:
Use implements keyword
Should implement all the interfaces methods
A class can implement several interfaces 37
Java Program Structure:
Interface
1 interface MyInterface {
2 void iMethod();
3 }
4

I ntroduction to Program m ing 2


5 class MyClass1 implements MyInterface {
6 public void iMethod() {
7 System.out.println("Interface method.");
8 }
9 void myMethod() {
10 System.out.println("Another method.");
11 }
12 }
38
13 //continued...
Java Program Structure:
14
Interface
class MyClass2 implements MyInterface {
15 public void iMethod() {
16 System.out.println("Another implementation.");
17 }
18 }
19 class InterfaceDemo {
20 public static void main(String args[]) {
21 MyClass1 mc1 = new MyClass1();
22 MyClass2 mc2 = new MyClass2();
23 mc1.iMethod();
24 mc1.myMethod();
25 mc2.iMethod();
26 }
27 } I ntroduction to Program m ing 2 39
Java Program Structure:
The this Keyword
Why this?
1. Disambiguate local attribute from a local variable
2. Refer to the object that invoked the non-static method
3. Refer to other constructors

I ntroduction to Program m ing 2


40
Java Program Structure:
The this Keyword
Disambiguate local attribute from a local variable
1 class ThisDemo1 {
2 int data;
3 void method(int data) {

I ntroduction to Program m ing 2


4 this.data = data;
5 /*
6 this.data refers to the attribute
7 while data refers to the local variable
8 */
9 }
10 }
41
Java Program Structure:
The this Keyword
Refer to the object that invoked the non-static method
1 class ThisDemo2 {
2 int data;
3 void method() {

I ntroduction to Program m ing 2


4 System.out.println(data); //this.data
5 }
6 void method2() {
7 method(); //this.method();
8 }
9 }

42
Java Program Structure:
The this Keyword
Method Overloading
Different methods within a class sharing the same name
Parameter lists should differ
Number of parameters

I ntroduction to Program m ing 2


Type of parameters
Constructors can also be overloaded
An example:
class MyClass {
void myMeth() {}
void myMeth(int i) {}
void myMeth(int i, int j) {}
}
43
Java Program Structure:
The this Keyword
Refer to other constructors
1 class ThisDemo3 {
2 int data;
3 ThisDemo3() {

I ntroduction to Program m ing 2


4 this(100);
5 }
6 ThisDemo3(int data) {
7 this.data = data;
8 }
9 }

44
Call to this() should be the first statement in constructor
Java Program Structure:
The super Keyword
Related to inheritance
Invoke superclass constructors
Can be used like the this keyword to refer to members of the
superclass

Calling superclass constructors


1 class Person {
2 String firstName;
3 String lastName;
4 Person(String fname, String lname) {
5 firstName = fname;
6 lastName = lname;
7 }
8 } I ntroduction to Program m ing 2 45
Java Program Structure:
The super Keyword
9 //continuation...
10 class Student extends Person {
11 String studNum;
12 Student(String fname, String lname, String sNum) {

I ntroduction to Program m ing 2


13 super(fname, lname);
14 studNum = sNum;
15 }
16 }

super()
Refers to the immediate superclass
Should be first statement in the subclasss constructor 46
Java Program Structure:
The super Keyword
Referring to superclass members
1 class Superclass{
2 int a;
3 void display_a(){

I ntroduction to Program m ing 2


4 System.out.println("a = " + a);
5 }
6 }
7

8 //continued...

47
Java Program Structure:
The super Keyword
9 class Subclass extends Superclass {
10 int a;
11 void display_a(){
12 System.out.println("a = " + a);

I ntroduction to Program m ing 2


13 }
14 void set_super_a(int n){
15 super.a = n;
16 }
17 void display_super_a(){
18 super.display_a();
19 }
20 }
48
Java Program Structure:
The super Keyword
21 class SuperDemo {
22 public static void main(String args[]){
23 Superclass SuperObj = new Superclass();
24 Subclass SubObj = new Subclass();

I ntroduction to Program m ing 2


25 SuperObj.a = 1;
26 SubObj.a = 2;
27 SubObj.set_super_a(3);
28 SuperObj.display_a();
29 SubObj.display_a();
30 SubObj.display_super_a();
31 System.out.println(SubObj.a);
32 }
49
33 }
Java Program Structure:
The static Keyword
Applied to members of a class:
Attributes
Methods
Inner classes

I ntroduction to Program m ing 2

Allows accessing of static or class members without


instantiation

Class variables
Behave like a global variable
Can be accessed by all instances of the class
50
Java Program Structure:
The static Keyword
Class methods
May be invoked without creating an object of its class
Can only access static members of the class
Cannot refer to this or super

I ntroduction to Program m ing 2


static blocks
Executed only once, when the class is loaded
For initializing class variables

51
Java Program Structure:
The static Keyword
1 class Demo {
2 static int a = 0;
3 static void staticMethod(int i) {
4 System.out.println(i);

I ntroduction to Program m ing 2


5 }
6 static { //static block
7 System.out.println("static block");
8 a += 1;
9 }
10 }
11

12 //continued...
52
Java Program Structure:
The static Keyword
13 class StaticDemo {
14 public static void main(String args[]) {
15 System.out.println(Demo.a);
16 Demo.staticMethod(5);

I ntroduction to Program m ing 2


17 Demo d = new Demo();
18 System.out.println(d.a);
19 d.staticMethod(0);
20 Demo e = new Demo();
21 System.out.println(e.a);
22 d.a += 3;
23 System.out.println(Demo.a+", "+d.a+", "+e.a);
24 }
53
25 }
Java Program Structure:
The final Keyword
Applied to variables, methods and classes

Restricts what we can do with the variables, methods and


classes

I ntroduction to Program m ing 2


final variable
Cannot be modified once its value has been set
Example:
final int data = 10;
data++;

54
Java Program Structure:
The final Keyword
final method
Cannot be overridden
Example:
final void myMethod() { //in a parent class
}

I ntroduction to Program m ing 2


void myMethod() { //in a child class
}

final class
Cannot be inherited
Example:
final public class MyClass {}
class WrongClass extends MyClass {} 55
Java Program Structure:
The final Keyword
Keyword may be placed before after other modifiers
public final static void meth() {} or
final public static void meth() {} or ...
//order of modifiers is not important

I ntroduction to Program m ing 2


56
Java Program Structure:
Inner Classes
Class declared within another class

Accessing the members of the inner class:


Need to instatiate an inner class member first

I ntroduction to Program m ing 2


Example:
innerObj.innerMember = 5;
//innerObj is an instance of the inner class
//innerMember is a member of the inner class

57
Java Program Structure:
Inner Classes

Methods of the inner class can directly access members of


the outer class
Example:
1 class Out {

I ntroduction to Program m ing 2


2 int OutData;
3 class In {
4 void inMeth() {
5 OutData = 10;
6 }
7 }
8 }

58
Java Program Structure:
Inner Classes
1 class OuterClass {
int data = 5; class InnerClass {
2
int data2 = 10; void method() {
3

4 System.out.println(data); System.out.println(data2);

I ntroduction to Program m ing 2


5}
6
}
7

10

11 //continued...

59
Java Program Structure:
9 public static void main(String args[]) {
10 OuterClass oc = new OuterClass();
11 InnerClass ic = oc.new InnerClass();
12 System.out.println(oc.data);
System.out.println(ic.data2);

I ntroduction to Program m ing 2


13

14 ic.method();
15 }
16 }

60

Anda mungkin juga menyukai