chapter5 - คลาสนามธรรม - อินเตอร์เฟสคลาส

Slides:



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

Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
Lab Part Nattee Niparnan
การจัดการความผิดพลาด
05_3_Constructor.
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
การเขียนโปรแกรมภาษาจาวาตอนที่ ๓
ครั้งที่ 7 Composition.
หลักการเชิงวัตถุ อาจารย์ศิริพร ศักดิ์บุญญารัตน์
Use Case Diagram.
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 Method (1).
การสืบทอดคุณสมบัติ (Inheritance)
OOP (Object-Oriented Programming)
C# Programming Exceed Camp: Day 3.
Lecture 9 Class (คลาส) To do: Hand back assignments
Inheritance การสืบทอดคลาส
String Class มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
อาร์เรย์ หรือแถวลำดับ (Array)
input from keyboard มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 15 มิถุนายน 2550 Structure Programming มหาวิทยาลัยเนชั่น.
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 3 มิถุนายน 2550 Method of Class มหาวิทยาลัยเนชั่น.
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 7 มิถุนายน 2556 Text File Processing มหาวิทยาลัยเนชั่น.
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 22 มิถุนายน 2550 ความผิดพลาดที่พบ บ่อย มหาวิทยาลัยเนชั่น.
บทที่ 8 อาร์เรย์.
บทที่ 6 เมธอด.
ทำงานกับ File และStream
JAVA PROGRAMMING PART IV.
Handling Exceptions & database
โปรแกรมภาษาจาวาเบื้องต้น Basic Java Programming 3(2-2-5)
เมธอดคือหน้าที่การงานของวัตถุให้เรียกใช้
HTML, PHP.
ความสัมพันธ์ระหว่างคลาส (Class Relationship)
Object Oriented Programming Handling Exceptions
Method of Class อ.สุพจน์ สิงหัษฐิต
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา
Lec03 :: หลักการเชิงออปเจ็ค (Object Oriented Concept)
Lec05 :: การสืบทอด (inheritance)
Object-Oriented Programming
บทที่ 3 Class and Object (2).
WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 4 analysis of algorithm efficiency.
บทที่ 2 การแสดงผลและรับข้อมูล
บทที่ 4 คำสั่งควบคุมแบบมีทางเลือก
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
Java Programming Java Structure and Datatype,Variable
Midterm outline Object-oriented programming Wattanapong suttapak, Software Engineering, school of Information communication Technology, university of phayao.
BCS 121 บท 5 การโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
สายอักขระ เขียนโปรแกรม Java เบื้องต้น.
Object Oriented Programming : OOP
TECH30201 Object-Oriented Programming
Inheritance และ Encapsulation.  การสร้างหรือพัฒนาคลาสใหม่จากคลาสเดิมที่ มีอยู่แล้ว  คลาสใหม่จะนำแอตทริบิวต์และเมธอดของ คลาสเดิมมาใช้  เป็นการถ่ายทอดคุณสมบัติจากคลาสหนึ่งสู่อีก.
Object-Oriented Programming
คอนสตรัคเตอร์ (Constructor)
การจัดการกับความผิดปกติ
chapter 2 - Construction and destruction - Overloading method
บทที่ 6 ตัวแปรชุดและ สตริง รายวิชา ง การเขียนโปรแกรมเชิง วัตถุ Reading: ใบความรู้ บทที่ 6.
Function. วัตถุประสงค์การเรียนรู้ ให้รู้จักว่าฟังก์ชันคืออะไร ให้รู้จักว่าเราสร้างฟังก์ชันเพื่อจุดประสงค์ใด หรือ เพื่อประโยชน์ใด ให้รู้จักประเภทของฟังก์ชัน.
Chapter 6 Abstract Class and Interface
Nested loop.
บทที่ 3 การสืบทอด (Inheritance)
การเขียนโปรแกรมคอมพิวเตอร์ แบบภาษาเชิงวัตถุ
ใบสำเนางานนำเสนอ:

chapter5 - คลาสนามธรรม - อินเตอร์เฟสคลาส WATTANAPONG SUTTAPAK, SE, ICT, UP, Thailand

วัตถุประสงค์ เข้าใจคุณสมบัติและหลักการของคลาสนามธรรม สร้างคลาสนามธรรมได้ และสามารถบอกได้ว่าคำสั่งใดทำให้เกิดข้อผิดพลาดในคลาสนามธรรม สามารถเขียนโปรแกรมประยุกต์ใช้งานคลาสนามธรรมได้ เข้าใจคุณสมบัติและหลักการของอินเตอร์เฟสคลาส สร้างอินเตอร์เฟสคลาสได้ และสามารถบอกได้ว่าคำสั่งใดทำให้เกิดข้อผิดพลาดในอินเตอร์เฟสคลาส สามารถเขียนโปรแกรมประยุกต์ใช้งานอินเตอร์เฟสคลาสได้ เข้าใจถึงความเหมือนและความแตกต่างระหว่างคลาสนามธรรมและอินเตอร์เฟสคลาส มีความเข้าใจในการเลือกใช้งานที่ต่างกันของคลาสนามธรรมและอินเตอร์เฟสคลาส

Abstract class การ extends(inherit) สืบทอดได้ทีละ 1 class เท่านั้น หมายถึง class ที่ไม่สามารถสร้าง instance ได้(สร้าง instance class แบบปกติ) คุณสมบัติ abstract class มีคำว่า abstract อยู่หน้า class นั้น method ภายใน abstract class มีหรือไม่มีคำว่า abstract อยู่หน้าชื่อ method นั้นก็ได้ ถ้าไม่มี abstract นำหน้าชื่อ method ให้เขียน method ตามปกติ ถ้ามี abstract นำหน้าชื่อ method หมายถึง method นั้นจะยังไม่สมบูรณ์ ต้องถูก override method การเรียกใช้งาน abstract class ทำได้ 2 วิธีคือ new instance และทำการ override ทุกๆ method ที่เป็น abstract method สืบทอดคุณสมบัติ(extends class) โดยแบ่งเป็นสองแบบ ถ้า class ที่มาสืบทอดถูกประกาศเป็น abstract class ไม่จำเป็นต้อง override method เลยก็ได้ ถ้า class ที่มาสืบทอดเป็น class ทั่วไป ต้องสร้าง abstract method ให้เป็น method ที่ สมบูรณ์ ทั้งหมด การ extends(inherit) สืบทอดได้ทีละ 1 class เท่านั้น

Abstract class ตัวอย่าง abstract class ในรูปแบบต่างๆ void printTxt(){ System.out.println("This is text."); } public abstract class Abstract {} abstract class Abstract {} abstract class Abstract { abstract void printTxt(); } abstract class Abstract { abstract void printTxt(){ System.out.println("This is text."); } abstract class Abstract { void printTxt(){} }

Abstract class ตัวอย่าง abstract class ในรูปแบบต่างๆ abstract void printTxt(); } abstract class Abstract { abstract int printTxt(); } abstract class Abstract { void printTxt(){ System.out.println("This is text."); } abstract void greeting(); abstract class Abstract { abstract void printTxt(); abstract void greeting(); }

Abstract class class Abstract { void printTxt(){ System.out.println("This is text."); } ตัวอย่าง abstract class ในรูปแบบต่างๆ abstract class Abstract { void printTxt(){ System.out.println("This is text."); } void greeting() { System.out.println(“Hello"); class Abstract { void printTxt(){ System.out.println("This is text."); } abstract void greeting();

Abstract class Hello ตัวอย่าง 1.1 Abstract.java MainAbstract.java abstract class Abstract { void printTxt() { System.out.println("This is text."); } abstract void greet(); public class MainAbstract { public static void main(String[] args) { Abstract2 a = new Abstract2(); a.greet(); //a.printTxt(); } class Abstract2 extends Abstract { void greet(){ System.out.println("Hello"); //สร้าง instance class Abtract โดยตรงไม่ได้ //extend class Abtract เป็น Abstract2 Hello

Abstract class Hello public class MainAbstract { ตัวอย่าง 1.2 new instance Abstract.java MainAbstract.java abstract class Abstract { void printTxt() { System.out.println("This is text."); } abstract void greet(); public class MainAbstract { public static void main(String[] args) { Abstract a = new Abstract() { void greet(){ System.out.println("Hello"); } a.greet(); //สร้าง instance class Abtract แล้ว override method แล้วแบบไหนดีกว่ากัน ? ตัวอย่าง 1.1 กับ 1.2 Hello

Interface class เป็น class ที่มีคุณสมบัติคล้าย abstract class คือ มี abstract method เหมือนกัน(ใช้คำว่า abstract หน้าชื่อ method) โดยมีรูปแบบที่แตกต่างคือ ใช้คำว่า interface นำหน้า class แทน abstract class ตัวแปรที่สร้าง(attribute) ทั้งหมดเป็นประเภท static final อัตโนมัติ method ทั้งหมดเป็น public abstract อัตโนมัติ การสืบทอดคุณสมบัติจาก class แม่เปลี่ยนจาก extends เป็น implements โดย interface class จะต้องถูก implements method ทั้งหมด จึงจะสามารถสร้าง instance ได้

Interface class public interface ExIm1 {} interface ExIm1 {} void printTxt(); } interface ExIm1 { abstract void printTxt(); } interface ExIm1 { int myVar = 1; void printTxt(); } interface ExIm1 { static final int myVar = 1; } interface ExIm1 { int myVar = 1; } interface ExIm1 { void printTxt(){} void greeting(); } interface ExIm1 { void printTxt(){} } interface ExIm1 { int myVar; }

interface class static ? เป็น modifier ถูกนำไว้หลัง modifier ที่ควบคุม visibility(public protected default private) นำหน้า class ได้แต่ต้องเป็น nested class(class ที่อยู่ภายใต้ class ) (ดูตัวอย่างสไลด์ต่อไป) นำหน้า method และ variable ได้ ไม่สามารถนำหน้า abstract method ได้ เมื่อมีการใช้ใน class จะสามารถเรียกใช้ได้ โดยตรง (ดูตัวอย่างสไลด์ต่อไป) เมื่อมีการใช้ใน method จะสามารถเรียก class.method ได้โดยตรง เมื่อมีการใช้ใน variable จะสามารถเรียก class.method ได้โดยตรง ภายใน class ที่มีการใช้ static variable สามารถเรียกใช้ได้เลยและค่าจะเปลี่ยนไปเมื่อถูกเรียกใช้งาน

interface class nested class class OuterClass{ class OtherClass{ //Use of a static nested class: private OuterClass.StaticNestedClass staticNestedClass = new OuterClass.StaticNestedClass(); //Doesn't work private OuterClass.InnerClass innerClass = new OuterClass.InnerClass(); //Use of an inner class: private OuterClass outerclass= new OuterClass(); private OuterClass.InnerClass innerClass2 = outerclass.getAnInnerClass(); private OuterClass.InnerClass innerClass3 = outerclass.new InnerClass(); } class OuterClass{ public static class StaticNestedClass{ } public class InnerClass{ จะเห็นว่า OtherClass สามารถ เรียกใช้ StaticNestedClass ผ่าน OuterClass ได้โดยตรง ในขณะที่ OtherClass ไม่สามารถ เรียกใช้ InnerClass ผ่าน OuterClass ได้โดยตรง โดย ต้องทำการสร้าง instance ของ OuterClass ก่อน

interface class ผลลัพธ์ที่ได้ 5 11 10 static method class Ex1 { public static void main(String[] args) { System.out.println(nestedEx1.i); nestedEx1.i +=5; nestedEx1.getI(); nestedEx1.getData(); new nestedEx1().getData(); } class nestedEx1{ static int i = 5; public static void getI(){ System.out.println(i+1); public void getData(){ System.out.println(i++); ผลลัพธ์ที่ได้ 5 11 10 จะสังเกตุเห็นว่า i มีค่าเพิ่มขึ้น

interface class ผลลัพธ์ที่ได้ i = 2, i = 3,j = 2, i = 4, i = 5,j = 2, static variable ผลลัพธ์ที่ได้ i = 2, i = 3,j = 2, i = 4, i = 5,j = 2, i = 6, i = 7,j = 2, i = 8, i = 9,j = 2, i = 10, i = 11,j = 2, สังเกตุเห็นค่า i กับ j จะเห็นว่าค่า i เป็น static จะเพิ่มขึ้นทุกครั้ง แต่ j ไม่ถูกเพิ่ม เนื่องจากมีการ new Ex2() ใหม่ทุกครั้งในลูป class Ex2 { static int i = 1; int j = 1; public static void main(String[] args) { for (int k = 0; k <5 ; k++) { incre1(); new Ex2().incre2(); } public static void incre1(){ System.out.println("i = "+ ++i +","); System.out.print("j = "+ ++j +","); public void incre2(){ System.out.print("i = "+ ++i +","); System.out.println("j = "+ ++j +",");

interface class final ? เป็น modifier ชนิดหนึ่ง นำหน้า class และ method ได้ นำหน้า primitive data type (int double float String …) สามารถนำ static มาไว้หน้า final ได้ เมื่อมีการประกาศ final แล้วต้องมีการกำหนดค่าลงไปในกรณี variable ค่าของ final variable จะไม่สามารถเปลี่ยนแปลงได้ และค่าของ final method จะไม่สามารถ override method ได้

Interface class } Hello public class MainInterface { ตัวอย่าง 2.1 MainInterface.java Interface.java public class MainInterface { public static void main(String[] args) { Interface2 a = new Interface2(); a.greet(); } class Interface2 implements Interface{ public void greet(){ System.out.println(txt); //สร้าง instance class Interface โดยตรงไม่ได้ Interface class Interface { String txt = “Hello”; void greet(); } //Implement class Interface เป็น Interface2 Hello

Interface class } Hello public class MainInterface { ตัวอย่าง 2.2 MainInterface.java Interface.java public class MainInterface { public static void main(String[] args) { Interface2 a = new Interface2(); a.greet(); } class Interface2 implements Interface{ public void greet(){ System.out.println(txt); //สร้าง instance class Interface โดยตรงไม่ได้ Interface class Interface { static final String txt = “Hello”; abstract void greet(); } //Implement class Interface เป็น Interface2 Hello

Interface class Person Faculty Club Students Teachers subStudent ตัวอย่าง 2.3 multiple implement Person Faculty Club Students Teachers subStudent subTeacher2 subTeacher1

Interface class ตัวอย่าง 2.3 multiple implement public interface Person { void setName(String n); String getName(); } public interface Faculty { String university = "University of Phayao"; String getFaculty(); } public interface Club { void setClub(String c); String getClub(); } public interface Students extends Faculty, Person,Club { void setID(int id); int getID(); } public interface Teachers extends Faculty, Person{ }

Interface class ตัวอย่าง 2.3 multiple implement public class subStudent implements Students { String name,club; int id; public String getFaculty() { return university; } public void setName(String n) { name = n; public String getName() { return name; public void setClub(String n) { club = n; public String getClub() { return club } public void setID(int id) { this.id = id; public int getID(){ return id;

Interface class ตัวอย่าง 2.3 multiple implement public class subTeacher1 implements Faculty,Person { String name,club; public void setName(String n) { name = n; } public String getName() { return name; public String getFaculty() { return university; public class subTeacher2 implements Teachers { String name,club; public void setName(String n) { name = n; } public String getName() { return name; public String getFaculty() { return university;

Interface class ตัวอย่าง 2.3 multiple implement public class MultiInterface { public static void main(String[] args) { Students s1 = new subStudent(); s1.setName("Bandit"); s1.setID(55021111); s1.setClub("Badminton Club"); System.out.println(s1.getName()+","+s1.getID()+","+s1.getFaculty()+","+s1.getClub()); subTeacher1 t1 = new subTeacher1(); t1.setName("Nattapon"); System.out.println(t1.getName()+","+t1.getFaculty()); Teachers t2 = new subTeacher2(); t2.setName("Wattanapong"); System.out.println(t2.getName()+","+t2.getFaculty()); } subStudent สืบทอด(inherit) Students Teachers ไม่ได้สืบทอด(non-inherit) subTeachers subTeacher สืบทอด(inherit) subTeachers

interface class ผลลัพธ์ที่ได้จากตัวอย่าง 2.3 Bandit,55021111,University of Phayao,Badminton Club Nattapon,University of Phayao Wattanapong,University of Phayao

abstract class vs interface class Comparing abstract class interface class class name declaration class ClassName interface ClassName inherit extends implements multiple inherit no yes abstract method optional all methods variable - static final

abstract class vs interface class class ต้นแบบ เพื่อให้ class อื่นสืบทอด เช่น class Teacher ถูกสร้างเพื่อเป็นแม่แบบ สำหรับ object อื่นๆ ที่เป็นครู interface class class ลูกที่สืบทอด เลือกที่จะสืบทอดหลายๆ คุณสมบัติจากคลาสต้นแบบ เช่น student สืบทอด คุณสมบัติ university, club, library, course เป็นต้น

Exercise คิดโครงสร้างของระบบที่มีการใช้งาน interface class เขียนโปรแกรมแสดงผลการใช้งาน