iT邦幫忙

2021 iThome 鐵人賽

DAY 2
2

前一天有提過,物件導向程式的個個物件都有自己該做的事,而且各自可以獨立作業,不過彼此間也能夠分工合作。接下來就來講各物件是如何運作的吧!


物件導向的語言有哪些?

  首先介紹物件導向的語言有哪些,其實很多程式語言都支援物件導向,包括了C語言大家族、Java、Delphi、Swift、Python、 PHP等等,幾乎平常用得到的程式語言都可以寫物件導向,只在於說我們有沒有去使用到這個功能而已。

基本概念

類別(Class)

  類別,在物件導向中是很重要的概念之一,它定義了一件事物擁有的屬性(Attribute)方法(Method),其屬性就是事物本身呈現的模樣,而方法則是事物本身能做哪些事情,詳情請看下面的程式範例(Java):

class Employee {
    int ID;
    String name;
    int age;
    int depID;
    String depName;

    public Employee(int id, String name, int age) {  //此為建構子(Constructor)
        ID = id;
        this.name = name;
        this.age = age;
    }

    //以下為方法(Method)
    public void setDepartment(int depID, String depName) {
        this.depID = depID;
        this.depName = depName;
    }

    public String getEmployeeInfo() {
        return "員工編號:" + ID + " 員工姓名:" + name + " 員工年齡:" + age;
    }

    public String getDepartment() {
        return "部門編號:" + depID + " 部門名稱:" + depName;
    }
}

  如上面的程式範例定義了一件事物(一位員工)所擁有的屬性(員工編號、員工姓名、員工年齡、部門編號、部門名稱)和方法(setDepartment()、getEmployeeInfo()、getDepartment()),這就是一個類別裡基本會擁有的抽象特徵。

物件(Object)

  在物件導向的概念裡,物件就是類別的實例,甚麼意思呢?讓我用下面範例來解釋:

public class Company{

    public static void main(String []args){

        Employee Jack = new Employee(123, "Jack", 45);

    }
}

  可以看到,我們在程式裡宣告了Jack是一位員工,Jack是一個具體的人,員工則是一個稱謂(抽象的概念)。

Employee Jack = new Employee(123, "Jack", 45);
Employee Tom = new Employee(148, "Tom", 30);
Employee John = new Employee(136, "John", 26);

  可以透過宣告的方式,來產出許多的物件(Jack、Tom 、John),而他們各自擁有屬於自己的屬性,都是獨立個個體,彼此不互相影響。

  

建構子(Constructor)

  再來講的是建構子,甚麼是建構子呢?它是為了初始化類別的一個函式,我想眼尖的朋友已經發現, Employee 後面那串文字,就是在描述一個物件具有的屬性,那我們在宣告的時候,同時就賦予它需要的值。那建構子長甚麼樣子呢?請看以下程式碼:

class Employee {
    int ID;
    String name;
    int age;

    public Employee(int id, String name, int age) {  //此為建構子(Constructor)
        ID = id;
        this.name = name;
        this.age = age;
    }
}

  可以看到 Employee 這個類別裡有個建構子也叫 Employee ,而後面帶的參數,就是為了要在宣告物件的時候,依照對應的參數,填入此物件對應屬性的值,這樣就可以使用此物件來做事情囉!

  關於物件導向的基本概念還沒結束,下一篇會再介紹類別中的方法該怎麼使用,以及物件導向的三大特性。


除此之外,也歡迎大家走走逛逛關於我們團隊夥伴的文章
lu23770127 - SASS 基礎初學三十天
10u1 - 糟了!是世界奇觀!
juck30808 - Python - 數位行銷分析與 Youtube API 教學
SiQing47 - 前端?後端?你早晚都要全端的,何不從現在開始?


上一篇
IT鐵人DAY 1-進入物件導向世界前的心理準備
下一篇
IT鐵人DAY 3-物件導向基本概念(2)
系列文
淺談物件導向與Design Pattern介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
juck30808
iT邦研究生 1 級 ‧ 2021-09-18 15:06:15

推推!

我要留言

立即登入留言