Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lectures / lecture3_2

.pdf
Скачиваний:
33
Добавлен:
14.10.2016
Размер:
396.85 Кб
Скачать

APPLICATION DEVELOPMENT SDP-2

Lecture 5.

Using Encapsulation and Constructors

11 - 1

Copyright © 2011, Oracle and/or its affiliates. All rights reserved.

Topics

Encapsulation

Constructors

11 - 2

Copyright © 2011, Oracle and/or its affiliates. All rights reserved.

Overview

Encapsulation means hiding object fields by making all fields private:

Use getter and setter methods.

In setter methods, use code to ensure that values are valid.

Encapsulation mandates programming to the interface:

Data type of the field is irrelevant to the caller method.

Class can be changed as long as interface remains same.

Encapsulation encourages good object-oriented (OO) design.

11 - 3

Copyright © 2011, Oracle and/or its affiliates. All rights reserved.

public Modifier

public class Elevator {

public boolean doorOpen=false; public int currentFloor = 1; public final int TOP_FLOOR = 10; public final int MIN_FLOOR = 1;

... < code omitted > ...

public void goUp() {

if (currentFloor == TOP_FLOOR) { System.out.println("Cannot go up further!");

}

if (currentFloor < TOP_FLOOR) { currentFloor++;

System.out.println("Floor: " + currentFloor);

}

}

}

11 - 4

Copyright © 2011, Oracle and/or its affiliates. All rights reserved.

Dangers of Accessing a public Field

Elevator theElevator = new Elevator();

theElevator.currentFloor = 15;

Could cause a problem!

11 - 5

Copyright © 2011, Oracle and/or its affiliates. All rights reserved.

private Modifier

public class Elevator {

private boolean doorOpen=false; private int currentFloor = 1; private final int TOP_FLOOR = 10; private final int MIN_FLOOR = 1;

... < code omitted > ...

None of these fields can now be accessed from another class using dot notation.

public void goUp() {

if (currentFloor == TOP_FLOOR) { System.out.println("Cannot go up further!");

}

if (currentFloor < TOP_FLOOR) { currentFloor++;

System.out.println("Floor: " + currentFloor);

}

}

}

11 - 6

Copyright © 2011, Oracle and/or its affiliates. All rights reserved.

Trying to Access a private Field

Elevator theElevator = new Elevator();

theElevator.currentFloor = 15;

not permitted

NetBeans will show an error. You can get an explanation if you place your

cursor here.

11 - 7

Copyright © 2011, Oracle and/or its affiliates. All rights reserved.

private Modifier on Methods

public class Elevator {

Should this method

... < code omitted > ...

be private?

private void setFloor() { int desiredFloor = 5;

while ( currentFloor != desiredFloor ){ if (currentFloor < desiredFloor) {

goUp(); } else {

goDown();

}

}

}

public void requestFloor(int desiredFloor) {

... < contains code to add requested floor to a queue > ...

}

11 - 8

Copyright © 2011, Oracle and/or its affiliates. All rights reserved.

Interface and Implementation

Elevator

Control Panel

4

3

2

1

Public Access

Public Access

Public Access

Public Access

Elevator 1 Going Up

 

Elevator 2 Going Down

 

 

 

11 - 9

Copyright © 2011, Oracle and/or its affiliates. All rights reserved.

Get and Set Methods

public class Shirt {

private int shirtID = 0; // Default ID for the shirt

private String description = "-description required-"; // default // The color codes are R=Red, B=Blue, G=Green, U=Unset

private char colorCode = 'U';

private double price = 0.0; // Default price for all items

public char getColorCode() { return colorCode;

}

public void setColorCode(char newCode) { colorCode = newCode;

}

//Additional get and set methods for shirtID, description,

//and price would follow

}// end of class

11 - 10

Copyright © 2011, Oracle and/or its affiliates. All rights reserved.

Соседние файлы в папке Lectures