Issuu on Google+

Chapter 1 OOP กับ Java Programming

1


การเขียนโปรแกรมเชิงวัตถุ

(Object Oriented Programming : OOP) • เดิมการเขียนโปรแกรมเป็ นแบบเชิงโครงสร้ าง (Structure Programming) มีลกั ษณะคือ การทำางานแบบตามลำาดับ (Sequence) , การเลือกกระทำาตามเงื่อนไข(Decision) และ การทำา ำ ซ้า(Loop) • การเขียนโปรแกรมเชิงวัตถุ (object oriented programming) เป็ นการเขียนโปรแกรมแนวคิดใหม่ ได้ ถกู พัฒนาขึ ้น โดย Dr. Kristin Nygaard ซึง่ เป็ นชาวนอร์ เวย์ ในปี ค.ศ.1969 • เทคนิค OOP นี ้ได้ ถกู นำามาใช้ เป็ นครัง้ แรกในโปรแกรมคอมพิวเตอร์ ที่ใช้ บรรยาย ลักษณะการเคลือ่ นที่ของเรื อในอ่าว • ตัวอย่างภาษาที่เขียนแบบเชิงวัตถุ เช่น C++, C#, java 2


Structured Programming • ข้ อจำำกัดในกำรเขียนโปรแกรมเชิงโครงสร้ ำง

– ความซับซ้ อน เมื่อโปรแกรมมีขนาดใหญ่ – การใช้ ตวั แปรส่วนกลาง (global variable) GV1

function A

GV2

function B

GV3

function C

function D

3


Structured Programming • ข้ อจำำกัดในกำรเขียนโปรแกรมเชิงโครงสร้ ำง

– การเปลีย่ นแปลงชนิด หรื อโครงสร้ างของข้ อมูลทำาได้ ยาก – กำาหนดชนิดข้ อมูลใหม่ทำาได้ ยาก – แนวคิดในการเขียนโปรแกรมไม่สมั พันธ์กบั โลกที่เป็ นจริ ง

4


OOP • ลักษณะกำรเขียนโปรแกรมเชิงวัตถุ

– เป็ นการรวมข้ อมูลและฟั งก์ชนั่ (function) ที่ดำาเนินการต่อข้ อมูลนันเข้ ้ า ไว้ ด้วยกันเป็ นหน่วยเดี่ยวๆ คือ วัตถุเป้าหมาย (object) – การเรี ยกใช้ งานข้ อมูลต่างๆ ของวัตถุเป้าหมาย จะต้ องเรี ยกผ่านฟั งก์ชนั่ ของ วัตถุเป้าหมายนัน้ – การดัดแปลงข้ อมูลในวัตถุเป้าหมาย การบำารุงรักษา ทำาได้ งา่ ย – วัตถุเป้าหมายจะเป็ นอิสระต่อกัน

5


OOP • ลักษณะกำรเขียนโปรแกรมเชิงวัตถุ data function

data function function

function data function function 6


Examples (structured programming

VS OOP)

• โปรแกรมจำาลองการแสดงระดับน้ำ ามันในรถยนต์ 2 คัน โดยที่คนั แรกมีน้ำามันอยูใ่ น ถัง 60% คันที่ 2 มีน้ำามันอยู่ 20% • รถยนต์คนั แรกแวะเติมน้ำ ามันไป 40% ส่วนรถยนต์คนั ที่ 2 ใช้ น้ำามันจนหมดถัง Solution I

{ written by using Turbo Pascal in structured programming style } Program fuel_level; Var level : real; Begin level := 60.0; level := level + 40.0; writeln(‘The fuel left in the first car is ‘, level); level := 20.0; level := level – 20.0; writeln(‘The fuel left in the second car is ‘, level); End.

7


Examples (structured programming

VS OOP)

Solution II // written by using Java public class Fuel_level { private double f_level; public void fill (double amt) { f_level += amt; } public void used (double amt) { f_level -= amt; } public double get_level () { return f_level; } Fuel_level(double x) { f_level = x ; } public static void main (String args[]) { Fuel_level car1 = new Fuel_level (60); Fuel_level car2 = new Fuel_level (20); car1.fill (40); car2.used (20); System.out.println(car1.get_level()); System.out.println(car2.get_level()); }

8


คุณสมบัตขิ อง OOP • จุดประสงค์หลักของการออกแบบโปรแกรมเชิงวัตถุคือ กำรนำำกลับมำ ใช้ ใหม่ (software reuseability) • คลำส (class) คืออะไร

– คลาส เป็ นแม่พิมพ์ (pattern) ของวัตถุเป้าหมาย แต่ละคลาสจะถูก กำาหนดคุณสมบัติ และความสามารถของคลาสนันๆ ้ • วัตถุเป้ำหมำย (object) คืออะไร – วัตถุเป้าหมาย เป็ นตัวแทนของสิง่ ที่กำาลังศึกษาอยู่ โดยที่วตั ถุเป้าหมายจะถูก สร้ างจากคลาส วัตถุเป้าหมายที่มาจากคลาสเดียวกัน จะมีคณ ุ สมบัตพิ ื ้นฐาน ที่กำาหนดไว้ ในคลาสนัน้ เหมือนกัน แต่อาจมีคณ ุ สมบัติเฉพาะตัวที่แตกต่าง กันได้ 9


คุณสมบัตขิ อง OOP • โดยทัว่ ไปวัตถุเป้าหมายหนึง่ ๆ จะประกอบ ด้ วย 3 องค์ประกอบคือ – คุณลักษณะเฉพำะ (identity) – สถำนะ (state) ซึง่ จะถูกกำาหนดโดยค่าของคุณสมบัติ (attribute)

– ควำมสำมำรถ (method

/function/ behavior)

Class Human Attributes name, birthday, height, weight, eye color

Method / function / behavior walk eat grow reproduce

10


แนวควำมคิดหลักของ OOP • กำรซ่ อนข้ อมูล (data encapsulation) • กำรสืบทอด (inheritance) • กำรเปลี่ยนรู ป (polymorphism)

11


แนวควำมคิดหลักของ OOP • กำรซ่ อนข้ อมูล (data encapsulation)

– เป็ นการสร้ างขอบเขตการมองเห็นให้ กบั วัตถุเป้าหมาย ทำาให้ สามารถขจัด ปั ญหาเกี่ยวกับเรื่ องตัวแปรส่วนกลาง (global variable) ลงไปได้ – ใช้ Public , Private ในการแสดงผลข้ อมูล

12


แนวควำมคิดหลักของ OOP • กำรสืบทอด (inheritance)

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


แนวควำมคิดหลักของ OOP • กำรสืบทอด (inheritance) Inheritance

A

Base class / super class

A

A B

E

A C

D

Derived class / sub class

14


แนวควำมคิดหลักของ OOP • กำรเปลี่ยนรู ป (polymorphism)

– ลักษณะการใช้ ตวั ดำาเนินการ หรื อฟั งก์ชนั่ ที่แตกต่างกัน โดยขึ ้นอยูก่ บั ว่าตัว ดำาเนินการนันกำ ้ าลังทำางานอยูก่ บั อะไร – ตัวอย่ ำง เช่น “ + ” หมายถึง การบวก สำาหรับตัวเลข แต่หมายถึงการรวมข้ อความ สำาหรับตัวอักขระ “ draw (10,20) ” หมายถึง การวาดวงกลมที่ coordinate (10,20) สำาหรับวัตถุเป้าหมายวงกลม แต่ถ้าเป็ นวัตถุเป้าหมายแบบ สี่เหลี่ยม method นี ้จะหมายถึงการวาดรูปสี่เหลี่ยมที่ coordinate (10,20)

15


end of chapter 1

16


Chapter01