Basic OOP

OOP พื้นฐาน

พื้นฐาน OOP


พื้นฐานการเขียนโปรแกรมด้วย C#.NET

Class กับ Object
  ทั้งสองเป็นสิ่งที่เกี่ยวข้องกัน โดย Class จะเป็นพิมพ์เขียวให้ Object สืบทอด Class 1 Class สามารถสร้าง Object ได้มาก 1 Object การสร้าง Object จากClass เรียกว่า Instance
การใช้งานคลาส
 การใช้งานคลาสสามารถทำได้สองวิธี คือการสร้าง Instance กับการใช้แบบ Static Class การใช้แบบนี้ดูเหมือนจะไม่เป็น OOP เท่าไหร่ แต่บางสถานการณ์ก็ดูเหมาะสมดีครับ
Object Oriented
  การใช้ Object เพื่อพิจารณาความเป็นจริงต่างๆ ด้วยการมองให้เป็นวัตถุ
Object Oriented Programming (OOP)
  การเขียนโปรแกรมเชิงวัตถุ ที่อยู่ในรูปของคลาส  โดยแต่ละคลาสสามารถถ่ายทอดคุณสมบัติ(Inherits) ลงมาเป็นลำดับชั้น(Hierarchy) โดยควรมีคุณสมบัติพื้นฐานดังนี้
 1.Encapsulation : การห่อหุ้มวิธีการและช้อมูลภายใน
 2.Inheritance : การสืบทอด
 3.Polymorphism : การแปรคคุณสมบัติ

Encapsulation
 การเอา Attribute ,Method เก็บรวมกันไว้ภายในคลาส เพื่อป้องกันการมองเห็น หรือการเข้าถึงนั้นเอง ข้อดี การนำกลับมาใช้ใหม่(reuse) ป้องกันการเข้าถึงภายในคลาสไม่ให้เกิดการเปลี่ยนแปลง ที่อาจเกิดผลกระทบขึ้นได้ การ Encapsulation ทำให้เกิดมุมมอง 2 มุมคือ มองภายในคลาส(เห็นทุกอย่างของคลาส)กับมองจากภายนอกซึ่งจะเห็นเพียงบางส่วนเท่านั้นเรียก ว่า Visbility ซึ่งเราจะกำหนดให้สามารถมองเห็นอะไรได้บ้างนั้นขึ้นอยู่กับความจำเป็นในการปิดรายละเอียด โดยสามารถแบ่งได้ 3 ระดับดังนี้ Public, Protected, Private
Inheritance
 การสืบทอดคุณลักษณะจากคลาสแม่สู่คลาสลูก ซึ่งคลาสลูกจะมีทุกอย่างที่คลาสแม่มี เราสามารถเพิ่มความสามารถให้กับคลาสลูกให้คลาสลูก มีความสามารถมากกว่าคลาสแม่ก็ได้ โดยจะต้องระบุคลาสที่ต้องการสืบทอดหลังเครื่องหมาย "colon(:)" (คลาสลูกไม่สามารถสืบทอดคุณลักษณะ จากคลาสแม่ได้ถ้าคลาสแม่ที่กำหนด Accessor เป็น private)
Polymorphism
 มาจาก 2 คำ คือ "poly-" เป็น Prefix หมายถึง หลาย morph มาจากภาษากรีก หมายถึงรูปแบบ รวมกันเป็น สิ่งเดียวที่มีหลายอย่าง ซึ่งความหมายโดยรวมหมายถึง
 ความสามารถของ Class 1 Class ที่มีความตอบสนองต่อ Message เดียวกันโดยแสดงพฤติกรรมที่แตกต่างกัน

คีย์เวิร์ค ที่จำเป็นต้องรู้
   virtual : อนุญาติให้สามารถสืบทอดได้
   sealed : ไม่ให้มีการสิบทอดต่อจากคลาสนี้อีก
   abstract : เป็นการสร้าง method ว่างไว้ เพื่อให้คลาสที่สืบทอดต่อนั้นอีมพลีเมนต์ method ต่อ โดย abstract class จะต้อง

ตัวอย่างการใช้ Abstract
//Add New Class in Project

using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApp1.Persol
{
public abstract class Persol
{
protected string strName = "";
protected string strLname = "";
protected string strAddress = "";
public abstract void setName(string name);
public abstract void setLName(string lname);
public abstract void setAddress(string address);
public abstract string getName();
public abstract string getLName();
public abstract string getAddress();
}
public class Employee:Persol
{
public override void setName(string name)
{
this.strName = name;
}
public override void setLName(string lname)
{
this.strLname = lname;
}
public override void setAddress(string address)
{
base.strAddress = address;
}
public override string getName()
{
return base.strName;
}
public override string getLName()
{
return base.strLname;
}
public override string getAddress()
{
return base.strAddress;
}
}
}

//Main Form

using System;
using System.Collections.Generic;
using System.Text;
using ConsoleApp1.Persol;
namespace ConsoleApp1
{
public class Program
{
static void Main(string[] args)
{
Employee emp = new Persol.Employee();
Console.Write("Enter Name :");
string strName=Console.ReadLine();
emp.setName(strName);
Console.Write("Enter LastName :");
string strLastName = Console.ReadLine();
emp.setName(strLastName);
Console.Write("Enter Address :");
string strAdd = Console.ReadLine();
emp.setName(strAdd);
Console.WriteLine("—————————-");
Console.WriteLine("After Enter Name");
Console.WriteLine("Name : " +strName);
Console.WriteLine("LastName :" + strLastName);
Console.WriteLine("Address : " + strAdd);
Console.Write("—————————-");
Console.WriteLine("—————————-");
}
}
}

ผลการรัน

5

One thought on “Basic OOP

กรุณา Comment สักหน่อยเถอะ จะได้ปรับปรุ่งให้ดีขึ้น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s