30.06.2013 Views

Using Java Using Java - AS Nida

Using Java Using Java - AS Nida

Using Java Using Java - AS Nida

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Object Oriented Programming<br />

<strong>Using</strong> <strong>Java</strong><br />

Enumerated Types<br />

Copyright © 2006 Pramote Kuacharoen – All rights reserved.<br />

Enumerated Types<br />

Pramote Kuacharoen<br />

Allows variables to hold a restricted set of values<br />

Not required that enum constants be capital letters; however,<br />

the Sun code convention states that constants are named in<br />

capital letters<br />

Can be declared as a separate class, or as a class member,<br />

however, they must not be declared within a method<br />

enum enum enum<br />

enum enum<br />

Size Size Size { { SMALL, SMALL, SMALL, SMALL, MEDIUM, MEDIUM, LARGE, LARGE, EXTRA_LARGE};<br />

EXTRA_LARGE};<br />

Size Size<br />

Size Size<br />

s s<br />

s s<br />

= =<br />

= =<br />

Size.MEDIUM<br />

Size.MEDIUM<br />

Size.MEDIUM<br />

2<br />

1


Ex: Declaring Enums<br />

enum enum<br />

enum enum<br />

Size Size { { SMALL, SMALL, SMALL, MEDIUM, MEDIUM, LARGE, LARGE, EXTRA_LARGE}<br />

EXTRA_LARGE}<br />

EXTRA_LARGE}<br />

class class<br />

class class<br />

Shirt Shirt<br />

Shirt Shirt Shirt<br />

{<br />

{<br />

{<br />

{<br />

Size Size<br />

Size Size<br />

size size; size<br />

size size; size<br />

}<br />

}<br />

public public public<br />

public public<br />

class class<br />

class class<br />

ShirtTest ShirtTest {<br />

{<br />

public public<br />

public public public<br />

static static<br />

static static<br />

void void<br />

void void<br />

main(String<br />

main(String[]<br />

main(String<br />

main(String<br />

main(String[]<br />

main(String<br />

[] [] [] args args {<br />

{<br />

Shirt Shirt<br />

Shirt Shirt<br />

shirt shirt = = new new Shirt();<br />

Shirt();<br />

shirt.size shirt.size<br />

shirt.size shirt.size<br />

= = Size.MEDIUM<br />

Size.MEDIUM;<br />

Size.MEDIUM<br />

Size.MEDIUM<br />

Size.MEDIUM;<br />

Size.MEDIUM<br />

}<br />

}<br />

}<br />

}<br />

Class<br />

Class<br />

Member<br />

Member<br />

class class<br />

class class<br />

Shirt Shirt Shirt<br />

Shirt Shirt Shirt<br />

{<br />

{<br />

{<br />

{<br />

enum enum<br />

enum enum<br />

Size Size { { SMALL, SMALL, MEDIUM, MEDIUM, LARGE, LARGE, EXTRA_LARGE}<br />

EXTRA_LARGE}<br />

Size Size<br />

Size Size<br />

size size; size<br />

size size; size<br />

}<br />

}<br />

public public<br />

public public<br />

class class class<br />

class class<br />

ShirtTest ShirtTest<br />

ShirtTest {<br />

{<br />

public public<br />

public public<br />

static static<br />

static static<br />

void void<br />

void void<br />

main(String<br />

main(String[]<br />

main(String<br />

main(String<br />

main(String[]<br />

main(String<br />

[] [] args args args args {<br />

{<br />

Shirt Shirt<br />

Shirt Shirt<br />

shirt shirt shirt = = new new Shirt();<br />

Shirt();<br />

shirt.size shirt.size<br />

shirt.size<br />

shirt.size shirt.size<br />

= = Shirt.Size.MEDIUM<br />

Shirt.Size.MEDIUM;<br />

Shirt.Size.MEDIUM<br />

Shirt.Size.MEDIUM<br />

Shirt.Size.MEDIUM;<br />

Shirt.Size.MEDIUM<br />

}<br />

}<br />

}<br />

}<br />

Copyright © 2006 Pramote Kuacharoen – All rights reserved.<br />

Optional Semicolon<br />

class class<br />

class class<br />

Shirt Shirt<br />

Shirt Shirt<br />

{<br />

{<br />

{<br />

{<br />

enum enum<br />

enum enum<br />

Size Size { { SMALL, SMALL, SMALL, MEDIUM, MEDIUM, LARGE, LARGE, LARGE, EXTRA_LARGE}<br />

EXTRA_LARGE};<br />

EXTRA_LARGE}<br />

EXTRA_LARGE}<br />

EXTRA_LARGE};<br />

EXTRA_LARGE}<br />

Size Size<br />

Size Size<br />

size size; size<br />

size size; size<br />

}<br />

}<br />

public public<br />

public public public<br />

class class<br />

class class<br />

ShirtTest ShirtTest<br />

ShirtTest {<br />

{<br />

public public<br />

public public<br />

static static<br />

static static<br />

void void<br />

void void<br />

main(String<br />

main(String[]<br />

main(String<br />

main(String<br />

main(String[]<br />

main(String<br />

[] [] args args {<br />

{<br />

Shirt Shirt<br />

Shirt Shirt Shirt<br />

shirt shirt shirt = = new new new Shirt();<br />

Shirt();<br />

shirt.size shirt.size<br />

shirt.size<br />

shirt.size shirt.size<br />

= = Shirt.Size.MEDIUM<br />

Shirt.Size.MEDIUM;<br />

Shirt.Size.MEDIUM<br />

Shirt.Size.MEDIUM<br />

Shirt.Size.MEDIUM;<br />

Shirt.Size.MEDIUM<br />

}<br />

}<br />

}<br />

}<br />

Copyright © 2006 Pramote Kuacharoen – All rights reserved.<br />

Separate<br />

Separate<br />

class<br />

class<br />

It is optional to put a semicolon at the end of the<br />

enum declaration<br />

3<br />

4<br />

2


Enum: A Special Kind of Class<br />

Enum can have constructors, methods, and<br />

variables<br />

enum enum<br />

enum enum<br />

Size Size {<br />

{<br />

SMALL(15), SMALL(15),<br />

SMALL(15), SMALL(15),<br />

MEDIUM(18), MEDIUM(18),<br />

MEDIUM(18), MEDIUM(18),<br />

LARGE(20), LARGE(20), LARGE(20),<br />

LARGE(20), LARGE(20),<br />

EXTRA_LARGE(25)<br />

EXTRA_LARGE(25)<br />

EXTRA_LARGE(25)<br />

EXTRA_LARGE(25)<br />

EXTRA_LARGE(25)<br />

private private<br />

private private<br />

int int length; length;<br />

length;<br />

Size(int Size(int<br />

Size(int Size(int<br />

length) length) length) {<br />

{<br />

this.length this.length<br />

this.length this.length<br />

= = length; length;<br />

length;<br />

}<br />

}<br />

public public<br />

public public<br />

int int getLength<br />

getLength() getLength<br />

getLength<br />

getLength() getLength<br />

() () {<br />

{<br />

return return<br />

return return return<br />

length;<br />

length;<br />

length;<br />

length;<br />

}<br />

}<br />

}<br />

}<br />

Copyright © 2006 Pramote Kuacharoen – All rights reserved.<br />

public public<br />

public public<br />

class class<br />

class class<br />

Shirt Shirt<br />

Shirt Shirt<br />

{<br />

{<br />

{<br />

{<br />

private private<br />

private private<br />

Size Size<br />

Size Size<br />

size;<br />

size;<br />

size;<br />

size;<br />

The enum Constructors<br />

public public<br />

public public<br />

static static<br />

static static<br />

void void<br />

void void<br />

main(String<br />

main(String[]<br />

main(String<br />

main(String<br />

main(String[]<br />

main(String<br />

[] [] args args {<br />

{<br />

Shirt Shirt<br />

Shirt Shirt<br />

shirt shirt = = new new Shirt();<br />

Shirt();<br />

shirt.size<br />

shirt.size shirt.size<br />

shirt.size shirt.size<br />

= = = Shirt.Size.MEDIUM<br />

Shirt.Size.MEDIUM;<br />

Shirt.Size.MEDIUM<br />

Shirt.Size.MEDIUM<br />

Shirt.Size.MEDIUM;<br />

Shirt.Size.MEDIUM<br />

System.out.println(shirt.size.getLength<br />

System.out.println(shirt.size.getLength();<br />

System.out.println(shirt.size.getLength<br />

System.out.println(shirt.size.getLength<br />

System.out.println(shirt.size.getLength();<br />

System.out.println(shirt.size.getLength<br />

();<br />

();<br />

}<br />

}<br />

}<br />

}<br />

The enum constructors are invoked automatically,<br />

with the arguments defined after the constant value<br />

The enum constructors can have many arguments<br />

The enum constructors can be overloaded<br />

The enum constructors can be define as anonymous<br />

inner class<br />

Copyright © 2006 Pramote Kuacharoen – All rights reserved.<br />

5<br />

6<br />

3


Ex: Enum with Anonymous Inner Class<br />

enum enum enum<br />

enum enum<br />

Size Size {<br />

{<br />

SMALL(15), SMALL(15),<br />

SMALL(15), SMALL(15),<br />

MEDIUM(18), MEDIUM(18),<br />

MEDIUM(18), MEDIUM(18),<br />

LARGE(20),<br />

LARGE(20),<br />

LARGE(20),<br />

LARGE(20),<br />

EXTRA_LARGE(25) EXTRA_LARGE(25)<br />

EXTRA_LARGE(25) EXTRA_LARGE(25)<br />

{<br />

{<br />

{<br />

{<br />

public public<br />

public public public<br />

String String<br />

String String<br />

getTag getTag() getTag<br />

getTag getTag() getTag<br />

() () {<br />

{<br />

return return return<br />

return return<br />

"Special "Special<br />

"Special "Special<br />

Tag";<br />

Tag";<br />

Tag";<br />

Tag";<br />

}<br />

}<br />

}<br />

}<br />

private private<br />

private private private<br />

int int length;<br />

length; length;<br />

Size(int Size(int<br />

Size(int Size(int<br />

length) length) {<br />

{<br />

this.length this.length<br />

this.length this.length<br />

= = length;<br />

length;<br />

}<br />

}<br />

public public public<br />

public public public<br />

int int getLength<br />

getLength() getLength<br />

getLength<br />

getLength() getLength<br />

() () () {<br />

{<br />

return return return<br />

return return<br />

length;<br />

length;<br />

length;<br />

length;<br />

}<br />

}<br />

public public<br />

public public<br />

String String String<br />

String String<br />

getTag getTag() getTag<br />

getTag getTag() getTag<br />

() () () {<br />

{<br />

return return return<br />

return return<br />

"Standard "Standard<br />

"Standard "Standard<br />

Tag";<br />

Tag";<br />

Tag";<br />

Tag";<br />

}<br />

}<br />

}<br />

}<br />

Copyright © 2006 Pramote Kuacharoen – All rights reserved.<br />

7<br />

4

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!