Sie sind auf Seite 1von 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

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;
private static String color = "yellow";

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

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
The Rectangle
this.height = height;
}
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;
}

public double getHeight()


{
return height;
}

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

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;
}

Now put it all


together and
compile it.

public double getWidth() {


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

Did you get it?

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");
is "

System.out.println("The area of the rectangle


+ 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

Das könnte Ihnen auch gefallen