24
CE 315 : การเขียนภาษาจาวาเพื่อการศึกษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา ผศ.ดร.อนันตกุล อินทรผดุง

Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 3: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

เนอหาทตองเรยนร

โครงสรางภาษาจาวา

ตวแปรและขอมลชนดพนฐาน

หลกการประมวลผล

การควบคมประโยคค าสง

คลาสและออบเจกตคออะไร

Interfaces และ Nested Classes

คณสมบตเชงวตถ

information hiding และ Encapsulation

Inheritance และ Polymorphism

CE 315 : การเขยนภาษาจาวาเพอการศกษา

Page 4: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

โครงสรางภาษาจาวา

CE 315 : การเขยนภาษาจาวาเพอการศกษา

Page 5: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

หลกการประมวลผลภาษาจาวาดวยหนาตางอดเตอร (Text Editor)

จาก นน จงท าการแปลภาษาด วยคอมไพเลอร(Compiler)ซงจะเปนการแปลภาษาแบบทละชดค าสงเปนภาษาเครองหรอทเรยกวา ออบเจกตโคดหรอจะได ไฟลเปนนามสกล .class

ซงไฟลนจะท าใหเครองคอมพวเตอรหรอซพยสามารถท างานตามค าสงทเขยนไวได แสดงขนตอนการท างานดงภาพ

5

Page 6: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

การประกาศตวแปรในภาษาจาวา

6

Page 7: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

ขอมลชนดพนฐานในภาษาจาวา

7

Page 8: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

การควบคมประโยคค าสง

การควบคมประโยคค าสง (Control Statement)หมายถง การเขยนชดค าสงเพอก าหนดโปรแกรมให ท างานตามทศทางทผใชตองการ สามารถแบงออกเปน2 ประเภทหลกๆ คอ

1. การควบคมประโยคค าสงแบบใหเลอกท า(Selection Control Statement) หรอ แบบใหตดสนใจท า (Decision Control Statement) จะประกอบดวยค าสง if – else และ switch – case

2. การควบคมประโยคค าสงแบบท าซ า(Repeating Control Statement) หรอ แบบใหมการวนซ าค าสง (Loop Control Statement) จะประกอบดวยค าสง for, while และ do-while

อยางไรกตามในสรางโปรแกรมท างานจรงอาจจ าเปนตองใชทงสองประเภทรวมกน ซงจะเรยก การ

8

Page 9: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

คลาส และ ออบเจกต

การสรางคลาส<Access-Modifier> class MyClass {

// field, constructor, and method declarations}

การสรางออบเจกตหรอตวแทนใหกบคลาส

MyClass instance = new MyClass(<constructor params>);

9CE 315 : การเขยนภาษาจาวาเพอการศกษา

Page 10: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

การก าหนดการเขาถงคลาสและออบเจกต

Example:

public class Person {

private String name;

protected java.util.Date birthDate;

String id; // default accessibility = package

public Person() {}

}

ประเภทของการก าหนดการเขาถง

– public – (default) = “package” **

– protected * – private

* protected is also accessible by package

** called also “package-private” or “package-friendly”

10CE 315 : การเขยนภาษาจาวาเพอการศกษา

Page 11: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

การเขาถงโดยไมตองผานตวแทน

Example:

public class Widget {

static private int counter;

static public getCounter() {

return counter;

}

}

int number = Widget.getCounter();

Called sometimes “class variable”

as opposed to “instance variable”

11CE 315 : การเขยนภาษาจาวาเพอการศกษา

Page 12: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

การใช คยเวรด this

Example:

public class Point {

private int x, y;

public Point(int x, int y) {

this.x = x;

this.y = y;

}

}

The ‘this’ keyword is also used to call another constructor of

the same class – we will see that later

12

Page 13: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

การก าหนดคาคงทใหกบตวแปร

Example:

public class Thingy {

public final static doodad = 6; // constant

public final id; // constant variable

public Thingy(int id) {this.id = id;} // OK

// public set(int id) {this.id = id;} // error!

}

13CE 315 : การเขยนภาษาจาวาเพอการศกษา

Page 14: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

คอนสตรทเทอร (Constructors)

คอนสตรทเทอร คอ เมธอดทชอเดยวกบคลาส

จะท างานเองอตโนมต เมอถกเขยน ตามหลง คยเวรค new

นยมใชก าหนดคาเร มตนใหกบตวแปรตางๆในโปรแกรม

แมไมมประกาศคอนสตรทเทอรไวในชดค าส ง แตโปรแกรมจะสราง คอ

นทรสเตอรแบบไมมการรบคาไวใหอตโนมต

สามารถรองรบการท า โอเวอรโหลดดงได (Overloading Method)

14CE 315 : การเขยนภาษาจาวาเพอการศกษา

Page 15: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

การสรางคอนสตรทเทอร

Example 1:

public class Person {

String name = ""; // fields can be initialized!

Date birthDate = new Date();

public Person() {} // empty constructor

public Person(String name, Date birthDate) {

this(name); // must be first instruction

this.birthDate = birthDate;

}

public Person(String name) {

this.name = name;

}

}

15

Page 16: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

Example 2:

public class Person {

String name = "";

Date birthDate = new Date();

public Person(String name, Date birthDate) {

this.name = name;

this.birthDate = birthDate;

}

}

Person p; // OK

p = new Person(); // not good – compilation error

16

การสรางคอนสตรทเทอร

CE 315 : การเขยนภาษาจาวาเพอการศกษา

Page 17: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

เดสคอนสตรคเตอร (Deconstrutor)

17

Page 18: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

คณสมบตของการเขยนโปรแกรมเชงวตถ การปกปดและซอนเรนขอมลขาวสาร (Information Hiding) การท าหบหอขอมล (Encapsulation) การสบทอดขอมล (Inheritance) การพองรป (Polymorphism)

18

Page 19: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

การสบทอด (Inheritance)เปนการสบทอดคณลกษณะและพฤตกรรม จากคลาสหลก (Super class) สคลาสยอย (Sub class) ซงคณลกษณะและพฤตกรรมของคลาสหลกจะตองไมก าหนดการเขาถงแบบสวนตว (Private)

19CE 315 : การเขยนภาษาจาวาเพอการศกษา

Page 20: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

การสรางการสบทอด

Example 1:

public class Person {

private String name;

public Person(String name) {

this.name = name;

}

// Override toString in class Object

public String toString() {

return name;

}

}

20CE 315 : การเขยนภาษาจาวาเพอการศกษา

Page 21: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

Example 1 (cont’):

public class Employee extends Person {

private Employee manager;

public Employee(String name, Employee manager) {

super(name); // must be first

this.manager = manager;

}

// Override toString in class Person

public String toString() {

return super.toString() +

(manager!=null? ", reporting to: " + manager :

" - I'm the big boss!");

}

}

21

การสรางการสบทอด

Page 22: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

Example 2:

abstract public class Shape {

// private Color line = Color.Black;

// private Color fill = Color.White;

public Shape() {}

/* public Shape(Color line, Color fill) {

this.line = line;

this.fill = fill;

} */

abstract public void draw();

abstract public boolean isPointInside(Point p);

}

22

การสรางการสบทอด

CE 315 : การเขยนภาษาจาวาเพอการศกษา

Page 23: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

Example 2 (cont’):

public class Circle extends Shape {

private Point center;

private double radius;

public Circle(Point center, double radius) {

this.center = center; this.radius = radius;

}

public void draw() {…} // use Graphics or Graphics2d

public boolean isPointInside(Point p) {

return (p.distance(center) < radius);

}

}

23

การสรางการสบทอด

CE 315 : การเขยนภาษาจาวาเพอการศกษา

Page 24: Java for Beginners – 2. OOP 1_OOP with Java.pdfCE 315 : การเข ยนภาษาจาวาเพ อการศ กษา การเขียนโปรแกรมเชิงวัตถุด้วยภาษาจาวา

Super and This Keyword