05_3_Constructor.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างโปรแกรมภาษา JAVA
Advertisements

Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
การจัดการความผิดพลาด
ครั้งที่ 8 Function.
การรับค่าและแสดงผล.
Week 6 ประกาศค่าตัวแปร.
Object-Oriented Programming
Object Oriented Programing
การเขียนโปรแกรมภาษาจาวาตอนที่ ๓
ตัวแปรชุด.
ครั้งที่ 7 Composition.
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
หลักการเชิงวัตถุ อาจารย์ศิริพร ศักดิ์บุญญารัตน์
C Programming Lecture no. 6: Function.
SCC : Suthida Chaichomchuen
Selected Topics in IT (Java)
การสืบทอด (Inheritance)
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
บทที่ 3 Class and Object (1) การสร้างและการใช้งานคลาส
คลาสและวัตถุ (2) (Class & Object)
 เป็นเมธอดที่มีคุณลักษณะของ Polymorphism รูปแบบหนึ่ง โดยใช้ชื่อเมธอดเดียวกัน มากกว่า 1 เมธอด เพื่อทำงานในแบบเดียวกัน  คลาสลูกสามารถเขียนทับ เมธอดของคลาสแม่ได้
บทที่ 1 หลักการเขียนโปรแกรมเชิงวัตถุ
คลาสและวัตถุ (3) (Class & Object)
คลาสและวัตถุ (2) (Class & Object)
คลาสและวัตถุ (4) (Class & Object)
คลาสและวัตถุ (3) (Class & Object). w5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 24, 25 as5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 23 2.
คลาสและวัตถุ (4) (Class & Object)
บทที่ 4 Method (1).
การสืบทอดคุณสมบัติ (Inheritance)
หน่วยที่ 14 การเขียนโปรแกรมย่อย
OOP (Object-Oriented Programming)
Inheritance การสืบทอดคลาส
String Class มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 3 มิถุนายน 2550 Method of Class มหาวิทยาลัยเนชั่น.
บทที่ 6 เมธอด.
JAVA PROGRAMMING PART IV.
เมธอดคือหน้าที่การงานของวัตถุให้เรียกใช้
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
ความสัมพันธ์ระหว่างคลาส (Class Relationship)
Method of Class อ.สุพจน์ สิงหัษฐิต
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา
การวิเคราะห์และออกแบบระบบเชิงวัตถุ (OOAD)
Lec03 :: หลักการเชิงออปเจ็ค (Object Oriented Concept)
Lec05 :: การสืบทอด (inheritance)
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
Object-Oriented Programming
บทที่ 3 Class and Object (2).
บทที่ 4 คำสั่งควบคุมแบบมีทางเลือก
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
Java Programming Java Structure and Datatype,Variable
BCS 121 บท 5 การโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
Object Oriented Programming : OOP
การสืบทอด (inheritance)
chapter5 - คลาสนามธรรม - อินเตอร์เฟสคลาส
TECH30201 Object-Oriented Programming
Inheritance และ Encapsulation.  การสร้างหรือพัฒนาคลาสใหม่จากคลาสเดิมที่ มีอยู่แล้ว  คลาสใหม่จะนำแอตทริบิวต์และเมธอดของ คลาสเดิมมาใช้  เป็นการถ่ายทอดคุณสมบัติจากคลาสหนึ่งสู่อีก.
Object-Oriented Programming
คอนสตรัคเตอร์ (Constructor)
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การจัดการกับความผิดปกติ
chapter 2 - Construction and destruction - Overloading method
บทที่ 6 ตัวแปรชุดและ สตริง รายวิชา ง การเขียนโปรแกรมเชิง วัตถุ Reading: ใบความรู้ บทที่ 6.
เริ่มต้นเขียนโปรแกรมภาษาจา วา (Introduction to JAVA Programming)
Chapter 6 Abstract Class and Interface
บทที่ 3 การสืบทอด (Inheritance)
Inheritance and Method Overriding
Method and Encapsulation
Inheritance Chapter 07.
Class Inheritance and Interfaces.
ใบสำเนางานนำเสนอ:

05_3_Constructor

Constructor Method เมธอดที่มีชื่อเดียวกับกับชื่อคลาส ในการเขียนโปรแกรมเมื่อมีการสร้างอ๊อปเจ็คขึ้นมา โปรแกรมจะมีการเรียกเมธอดที่มีชื่อเดียวกับชื่อคลาสทันที (ถ้ามีการสร้างเมธอดนี้ไว้)

การสร้าง Constructor Method Modifier มีอยู่ 2 ค่า คือ public และ default เท่านั้น Constructors จะไม่มีการ return type แม้แต่ void ก็ห้ามใช้ Constructor ถ้าไม่มีพารามิเตอร์จะเรียกว่า default constructor ตัวอย่างเช่น class A{ //สร้าง class A() {} //constructor Method สังเกตว่าไม่มี return type }

Note : เมธอดใดที่มีชื่อเดียวกับชื่อคลาส เรียกว่า Constructor Method class A{ //สร้าง class A() {} //default constructor }

Overloaded Constructor Method ในคลาสหนึ่งๆ สามารถมี Constructor ได้มากกว่า 1 Constructor เมื่อใดที่มี Constructor มากกว่า 1 จะเรียกกว่า Overloaded Constructor Method สามารถส่ง parameter ได้หลายรูปแบบ

A.java class A{ //สร้าง class double num; A() {} //default constructor A(int x){ num = x; } A(double y){ num = y;

Static binding and dynamic binding 07 Static binding and dynamic binding

Static binding และ dynamic binding Static Binding การผูกชื่อจะเกิดขณะคอมไพล ใชกับชื่อตัวแปร หรือ instanceการเรียกใช้ function แบบเดิมจะถูกจำกัดขอบเขตขณะ compile Dynamic Binding การผูกชื่อเกิดขึ้นขณะทํางาน (runtime) เป็นการเปลี่ยนแปลงรูปแบบตามสภาพของ object ที่ได้ถูกสร้างขึ้น เวลาที่ compiler จัดสรรหน่วยความจำให้กับตัวแปรในขณะที่โปรแกรมกำลังถูก execute (run อยู่) ไม่ใช่ในขณะที่กำลัง compile โปรแกรม ไม่สามารถเปลี่ยนแปลงหรือแก้ไขข้อมูลเกี่ยวกับตัวแปร หรือเมธอดได้หลังจากคอมไพล์โปรแกรมแล้ว

Polymorphism by Inheritance 07 Polymorphism by Inheritance

Polymorphism by Inheritance Methods หรือ Class ของวัตถุใดๆ จะถูกตรวจสอบเมื่อ run-time (Dynamic binding) จากรายละเอียดที่ได้กำหนดไว้ (Implementation) ของ Methods และ Class ใน Inheritance Hierarchies ในภาษาจาวา เมื่อมีการเรียกใช้ Method ใดๆ กับวัตถุหนึ่ง Java จะทำการค้นหารายละเอียดการกระทำ (Implementation) ของ Method ที่อยู่ภายในคลาสเดียวกัน ถ้าไม่พบจะทำการค้นหาจาก Superclass ทำเช่นนี้ไปเรื่อยๆ ไล่ขึ้นไปตามลำดับขั้นของ class Hierarchies จนกระทั่งพบ

Polymorphism Polymorphism เป็นลักษณะการทำงานของเมธอดชนิดหนึ่งที่อาศัยการทำงานของ Inheritance และ Dynamic Binging คือเมธอดหนึ่งสามารถตอบสนองการทำงานได้หลายรูปแบบขึ้นอยู่กับอ็อบเจ็คที่ส่งมา มีข้อกำหนดอยู่ว่า Parameter ของ Polymorphism จะต้องอ้างอิงกับ superclass เสมอ การนำ Polymorphism มาใช้งานจะทำให้สามารถนำเมธอดหนึ่งไปใช้งานได้หลายหน้าที่โดยไม่จำเป็นต้องสร้างเมธอดของแต่ละคลาสขึ้นมาใหม่

Polymorphism poly = many (มีหลายอย่าง, หลายแบบ), morphos = form (รูปแบบ), polymorphic จึงหมายถึงการมีมากกว่า 1 รูปแบบ หรือ many forms แนวความคิดของ polymorphism ก็คือการที่ object ที่เรียกใช้งาน method ของอีก object หนึ่ง ไม่จำเป็นต้องรู้ว่า object ที่รับ message นั้น เป็น object ของ class อะไร

ตัวอย่าง Polymorphism 1

Polymorphism by Inheritance Subtypes subclass เป็น specialization ของ superclass ทุก instance ของ subclass จัดเป็น instance ของ superclass สิ่งมีชีวิต สิ่งมีชีวิต คน งู คน งู

ตัวอย่าง Polymorphism 1 class สิ่งมีชีวิต {   เคลื่อนที่();   เคลื่อนที่(ความเร็ว);   // ในกรณีของ เคลื่อนที่() กับ เคลื่อนที่(ความเร็ว) ใน สิ่งมีชีวิต ถือเป็น overloading }

ตัวอย่าง Polymorphism 1 (ต่อ) class งู extends สิ่งมีชีวิต {   เคลื่อนที่() { "เลื้อย"; }   เคลื่อนที่(ความเร็ว) { "เลื้อย"; } } class คน extends สิ่งมีชีวิต {   เคลื่อนที่() { "เดิน"; }   เคลื่อนที่(ความเร็ว) { ถ้า ความเร็ว=เร็ว "วิ่ง" มิฉะนั้น เคลื่อนที่(); } } // ในกรณีของการ implement เคลื่อนที่() กับ เคลื่อนที่(ความเร็ว) ใน งู กับ คน // ไม่เรียก overloading แต่จะเรียก overriding เนื่องจากเป็นการ re-implement superclass' methods

ตัวอย่าง Polymorphism 1 (ต่อ) // เวลาใช้ คน x = new คน(); x.เคลื่อนที่();   x.เคลื่อนที่(เร็ว); // แสดงถึง polymorphisms ที่ parameter ต่างกัน แต่ object คน x เหมือนกัน สิ่งมีชีวิต y = x; สิ่งมีชีวิต z = new งู(); y.เคลื่อนที่(); z. เคลื่อนที่();  // แสดงถึง polymorphisms ที่ object ต่างชนิดกัน คือ คน y กับ งู z ถึงแม้ว่าจะอยู่ในคราบสิ่งมีชีวิตเหมือนกันก็ตาม

ตัวอย่าง Polymorphism 2

ตัวอย่าง Polymorphism 2 class One { public void m() { System.out.println("One's implementation"); } one

class Two extends One class Two extends One { public void m() { System.out.println("Two's implementation"); } one Two

class Three extends Two public void m() { System.out.println("Three's implementation"); } one Two Three

class TestPoly class TestPoly { public static void main(String[] args) { One one = new One(); Two two = new Two(); Three three = new Three(); one.m(); // (1) two.m(); // (2) three.m(); // (3) one = two; // (4) one.m(); // (5) two = three; // (6) three.m(); // (7) } static void show(One a){ a.m();

หรือ ทำรูปแบบดังต่อไปนี้ class TestPoly2 { public static void main(String[] args) { TestPoly2 myPoly = new TestPoly2(); One one = new One(); Two two = new Two(); Three three = new Three(); myPoly.show(one); // (1) myPoly.show(two); // (2) myPoly.show(three); // (3) } static void show(One a){ a.m();

ตัวอย่าง 3 Polymorphism 3

Polymorphism Shape Square Circle name getName( ) calculateArea( ) side radius

Polymorphism class Shape { private String name; public Shape(String aName) { // Overloaded Constructor Method name=aName; } public String getName( ) { return name; public float calculateArea( ) { return 0.0f; } // End Shape class a generic action

Understanding Polymorphism inheritance class Circle extends Shape { private float radius; public Circle(String aName){ super(aName); radius = 1.0f; } public Circle(String aName, float radius) { this.radius = radius; public float calculateArea() { return (float)3.14f*radius*radius; } // End Circle class overloading overriding

Understanding Polymorphism class Square extends Shape { private float side; public Square(String aName) { super(aName); side = 1.0f; } public Square(String aName, float side) { this.side = side; public float calculateArea() { return (float) side*side; } // End Square class

Understanding Polymorphism public class ShapeDemoClient { public static void main(String argv[ ]) { Shape c1 = new Circle("Circle C1"); Shape c2 = new Circle("Circle C2", 3.0f); Shape s1 = new Square("Square S1"); Shape s2 = new Square("Square S2", 3.0f); Shape shapeArray[ ] = {c1, s1, c2, s2}; for (int i = 0; i < shapeArray.length; i++) { System.out.println("The area of " + shapeArray[i].getName( ) + " is " + shapeArray[i].calculateArea( ) + " sq. cm."); } } // End main } // End ShapeDemoClient1 class rule of subtype dynamic binding

การใช้ Keyword : “Final” เมื่อใช้กับตัวแปร จะทำให้ตัวแปรนั้นเป็นค่าคงที่ (Constant) ไม่สามารถเปลี่ยนแปลงค่าได้ เมื่อใช้เป็น modifier ให้กับ class ไม่สามารถทำการ subclass คลาสที่ประกาศเป็น Final class เมื่อใช้กับเมธอด จะเป็นการป้องกันการ Override เมธอด ไม่สามารถทำการ override เมธอดที่ประกาศเป็น Final method