Вы находитесь на странице: 1из 30

UML Basics & Access Modifier

UML Basics

Java: UML Diagrams


EVE does Java

UML Diagram Class & Object

A class is described using a rectangle box with three sections.

The top section gives the class name, the middle section describes the fields, and the bottom section describes the methods. The middle and bottom sections are optional, but the top section is required.
An object is described using a rectangle box with two sections.

The top section is required. It gives the objects name and its defining class. The second section is optional; it indicates the objects field values.

The Access Modifiers

The symbols +, - and # are used to denote, respectively, public, private, and protected modifiers in the UML. The static fields and methods are underlined.

The Access Modifiers -- public


public access modifier: the + sign in UML Fields, methods and constructors declared public (least restrictive) within a public class are accessible by all class in the Java program, whether these classes are in the same package or in another package. For simplicity, just take package as the file folder in Windows Note: in one application program, there is only and only one public class Fields/methods are called Class fields/method/member, i.e., you dont need to create an instance to use them; the convention is to use the classname.methodName notation

The Access Modifiers -- private


private access modifier: the sign in UML The private (most restrictive) fields or methods cannot be accessed outside the enclosing/declaring class. To make all fields private, provide public getter/setter methods for them. The getter is used to set the values of the data fields The setter is used to change/modifier the fields

The Access Modifiers -- protected


protected access modifier: the # sign in UML Fields, methods and constructors declared protected in a class can be accessed only by subclasses in other packages and by those in the same class even if they are not a subclass of the protected members class.

The Access Modifiers -- default


default access modifier: without any sign when no access modifier is present, any class, field, method or constructor are accessible only by classes in the same package. This is also called the instance members, i.e., must create an instance of the class before the fields/methods can be used Use the instanceName.method() format

What is the Modifier? +constructor()

Public Private Final Protected Static Default

Good! What is this Modifier? -radius: double Public Private Final Protected Static Default

Good! What is this one? + numberOfObjects(): int


Public Private

Final
Protected

Static
Default

Good! What is this one? # aMethod(): void

Public
Private

Final
Protected

Static
Default

Answer the following:


How do you tell which method is a constructor? To access private methods, you need public _______ and ________ methods. (Also called Accessors and Mutators)
A modifier with no symbol is accessible only within the same folder or __________.

see

see

see

Now lets build a program

The name of the class will be, of course, Rectangle.

class Rectangle

Rectangle class

class Rectangle { // Data members private double width = 1, height = 1;

It has two private or local variables, and a static or global variable that is shared.

private static String color = "yellow";

Rectangle class

// Constructor public Rectangle() { }

The default constructor (with no parameters) - it will use the initialized values for height, width, and color.

Rectangle class

// Constructor public Rectangle(double width, double height) { this.width = width this.height = height; The Rectangle constructor }

needs two doubles. If you wish to use the same name in the parameters (formal and actual) you use

this.

Rectangle class

public double getWidth() { return width; }

In order to access or make changes to private variables, you need sets and gets. (Accessors and Mutators)

Rectangle class

public double getWidth() { return width; }

This is to access a Rectangle objects height and width after it is constructed.

public double getHeight() { return height; }

Rectangle class

public static String getColor() { return color; } public static void setColor(String color) { Rectangle.color = color; }

Color is static- it can be shared and changed- with all rectangle objects.

Rectangle class

public double getArea() { return width * height; } public double getPerimeter() { return 2 * (width + height); }

Now we just need the methods to get the area and perimeter of a rectangle object.

Rectangle class

class Rectangle { // Data members private double width = 1, height = 1; private static String color = "yellow"; // Constructor public Rectangle() { } // Constructor public Rectangle(double width, double height) { this.width = width; this.height = height; } public double getWidth() { return width; } public double getHeight() { return height; } public static String getColor() { return color; }

Now put it all together and compile it.

Did you get it?

public static void setColor(String color) { Rectangle.color = color; } public double getArea() { return width * height; } public double getPerimeter() { return 2 * (width + height); } }

TestRectangle class

To see if it works you now have to create a TestRectangle class. - which includes main.

public class TestRectangle { public static void main(String[] args) {

TestRectangle class

Rectangle myRect1 = new Rectangle(); Rectangle myRect2 = new Rectangle(4, 40); Rectangle myRect3 = new Rectangle(3.5, 35.9)

Lets create three rectangles, one default and two with different parameters.

TestRectangle class

To see if it worked, lets print out the first one. Compile and run. Get it?

System.out.println("The area of the rectangle is " + myRect1.getArea());


System.out.println("The perimeter is " + myRect1.getPerimeter()); System.out.println("The color is " + myRect1.getColor());

TestRectangle class

This is the rectangle object with no parameters. You can print out the height and width if you wish.

The area of a rectangle with width 1.0 and height 1.0 is 1.0 The perimeter of a rectangle is 4.0 The color is yellow

TestRectangle class

Now try the next rectangle using (4,40).

System.out.println("The area of the rectangle is " + myRect2.getArea());


System.out.println("The perimeter is " + myRect2.getPerimeter()); System.out.println("The color is " + myRect2.getColor());

TestRectangle class

Did you get it?

The area of the rectangle is 160.0 The perimeter is 88.0 The color is yellow

TestRectangle class

Lets try something a little different. Set the color for the third rectangle to red before you print it out.

myRect3.setColor("red");
System.out.println("The area of the rectangle is " + myRect3.getArea()); System.out.println("The perimeter is " + myRect3.getPerimeter()); System.out.println("The color is " + myRect3.getColor());

TestRectangle class

Did you get it?.

The area of the rectangle is 125.64999999999999 The perimeter is 78.8 The color is red

Вам также может понравиться