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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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!