OOP9 類別Class.

Slides:



Advertisements
Similar presentations
系統分析與設計 楊子青 H-1 H 、物件導向技術 n 物件導向的基本概念 – 物件、類別 – 封裝、繼承 – 同名異式 ( 多型 ) 、超荷 ( 過載 ) n 物件導向分析與設計及塑模工具 n UML 塑模工具.
Advertisements

第一單元 建立java 程式.
第6章 類別與物件 – 封裝 6-1 物件導向的基礎 6-2 Java的類別與物件 – 封裝 6-3 類別的建構子
<<會計資訊系統課程講義>> 統一塑模語言(UML)語法精要 -- 物件導向概念、需求分析及系統分析
大葉大學 指導教授: 黃鈴玲 學生: 林慶南(工業工程與科技管理所)
第一章 資料結構導論 1-1 資料結構簡介 1-2 認識程式設計 1-3 演算法效能分析 1-4 物件導向程式設計與Java.
第一章 面向对象程序设计.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
11 繼承類別 11.4 建立者與破壞者 單一建立者與破壞者 11-20
類別與物件 Class & Object.
C++入門 以Dev C++為例.
第11章 C語言到C++語言 11-1 物件導向程式設計 11-2 青出於藍的C C++的函數特殊功能 11-4 認識類別
C/C++基礎程式設計班 C++:物件導向程式設計 類別的使用 (Class)
挑戰C++程式語言 ─第13章 運算子的覆載.
方法與類別 in Java.
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
Java簡介.
H、物件導向技術 物件導向的基本概念 物件、類別 封裝、繼承 同名異式(多型) 、超荷(過載) 物件導向分析與設計及塑模工具 UML塑模工具.
Managing Inheritance Lecturer:曾學文.
Chap 18 類別與物件 夫有土者,有大物也。有大物者,不可以物。 物而不物,故能物物。 明乎物物者之非物也,豈獨治天下百姓而已哉!
4.1 概述 4.2 类与对象的实现 4.3 对象的初始化和析构 4.4 类的包含 4.5 类模板
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
CHAPTER 9 建構方法 ROBERT.
Java 程式設計 講師:FrankLin.
C++ 與 物件導向 程式設計概念簡介 魏天君 2018/11/24.
Managing Inheritance Lecturer:楊昌樺.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
C++ 與 物件導向 程式設計概念簡介 魏天君 2018/12/3.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
Java程序设计 第9章 继承和多态.
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
程式設計(二) 進階類別 郭文真 Sabrina Kuo.
Java 程式設計 講師:FrankLin.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Instructor Textbook Requirements TAs C++程式設計風格與藝術 (O’Reilly).
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
|12 結構與列舉型態.
程式設計實習課(四) ----C 函數運用----
第一單元 建立java 程式.
第7章 繼承/多型/介面 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
第 19 章 XML記憶體執行模式.
|07 函數.
精彩Java 2程式設計 <吳逸賢、吳目誠 編著>
方法進階及物件導向基礎 Lecturer: 曾學文.
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
樣版.
第三章 数据抽象.
Object-Oriented Programming in C++ 第二章 类和对象
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
函數應用(二)與自定函數.
陣列與結構.
12 虛擬函數 12.1 多載與超載 12-2 多載函數 12-2 超載函數 虛擬函數 12-6 同名異式 12-7
#include <iostream.h>
方法進階及物件導向基礎 Lecturer: 楊昌樺.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
第一讲 面向对象方法学与信息系统建模.
MultiThread Introduction
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
JAVA 程式設計與資料結構 第三章 物件的設計.
What is “this”? 在物件導向程式設計中,類別的定義就是在說明如果創建了“這個物件”的話,它會具有那些屬性與功能,以及這些功能是如何實現的。 而所謂的“這個物件”就以 this 來表示。 當我們在JavaScript與jQuery中寫 script 程式(函式)時,“誰”呼叫這個函式,這個“誰”就是該函式中所謂的.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
Object-Oriented Programming
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
13 繼承類別 13.1 繼承概論 基礎類別與衍生類別 繼承型式 13-2
資料結構與C++程式設計進階 C++與資料結構 講師:林業峻 CSIE, NTU 7/ 5, 2010.
方法(Method) 函數.
InputStreamReader Console Scanner
Presentation transcript:

OOP9 類別Class

物件導向式問題分析 傳統的程式設計方式-「程序導向」式的設計方法 物件導向式的設計方法 「功能」為何? 那些「程序」可以完成這些功能? 找出「物件」(Object) 物件就是”東西” 訊息傳遞(Message Passing)

物件導向程式語言 物件導向語言(OOP),主要用來描述一個物件(Object)的類別(Class),以及如何達成所謂動態繫結(Dynamic Binding) 、同名異式(Polymorphism)、覆蓋(Override)、覆載(Overload)、類別的繼承(Inheritance)等等機制 常見的物件導向程式語言 C++ Java Smalltalk ObjectPascal

Object 類別Class  object’s attribute(物件的屬性)有2個 Data(資料), property (Java中稱為field) 又稱”成員變數”Member variable (或data variable) Method 又稱”成員函數” Member function

物件導向程式語言 物件導向程式語言的優點 模組化設計(Module Design) 獨立且合作 容易維護(Easy to maintain) 可重複使用Reuse / Software IC

類別Class 本章主題 類別(Class)的宣告 操作成員(Operator Member)的定義與行內函式(Inline function) 建構元(Constructor)與解構元(Destructor) 合成使用類別 靜態的類別成員

類別的宣告 回顧結構(struct)定義

類別的宣告 class 類別名稱     {     private:         型別  成員資料 ;     public:         傳回值  成員函式1(傳入值……);         傳回值  成員函式2(傳入值……)    //成員函式2 為一連線函式。         {                //程式碼         }     };     傳回值  類別名稱::成員函式1(傳入值……)         {             //程式碼         } 類別名稱 變數名稱1; 類別名稱 變數名稱2; 變數名稱1.成員函式1(傳入值……);

類別的宣告

類別的使用 類別變數 - 案例/物件 public與private存取等級 不允許直接存取private資料成員

操作成員的定義 操作成員的定義: 定義函式的內容

行內函式 行內函式: 將操作成員的定義(函式的內容)寫在類別的定義中

行內函式 行內函式: 將操作成員的定義(函式的內容)寫在類別的定義之中

行內函式 使用inline保留字將操作成員定義成為行內函式

建構元(Constructor) 建構元是與類別同名稱的成員函式(member function),主要是用來進行資料成員的初始值設定(Initial value setting) 一個類別可以定義多個建構元,用以提供不同的初始化方式 建構元是不允許指定函式回傳資料型態

建構元(Constructor) class 類別名稱     {     private:         型別  成員資料 ;     public:         類別名稱( void );    // 建構子函式1         類別名稱(傳入值……);    // 建構子函式2         傳回值  成員函式1(傳入值……);         傳回值  成員函式2(傳入值……)    //成員函式2 為一連線函式。         {                //程式碼         }         ~類別名稱( );    //解構元函式     }; 類別名稱 變數名稱1;    //會呼叫"建構子函式1" 類別名稱 變數名稱2(傳入值……);    //會呼叫"建構子函式2"

預設引數建構元 當呼叫建構元時,若無提供足夠的參數值,建構元會以預設的引數值做為初始值

解構元(DeConstructor) 解構元的名稱與建構元相同,但名稱前面須加上 ~ 符號 解構元的作用與建構元剛好相反,它主要用來釋放物件所佔用的記憶體空間 解構元不接受任何參數,也不傳回任何值 一個類別只允許定義一個解構元

解構元 – 範例

解構元 – 範例

合成使用類別 在一個類別中使用其他類別作為其資料成員的一員

靜態的類別資料成員 靜態(Static)資料成員: 所有的類別案例共用一個資料

靜態的類別資料成員 class 類別名稱     {     private:         型別  成員資料 ;         static 型別  靜態成員資料 ;     //只有宣告而己     public:         傳回值  成員函式1(傳入值……);     }; 型別  類別名稱::靜態成員資料 ;     //定義靜態成員資料

靜態資料成員

靜態的類別資料 靜態類別資料 當成員資料為定義成靜態時,每一個物件,都只有一個共用的靜態資料項。當同類別的全部物件需要共同的資料訊息時,靜態變數便顯得特別有用。靜態資料成員變數的特性和一般靜態變數一樣,雖然僅可在類別中被參考,但生命週期卻和整個程式相同。

CLASS class是一個使用者自訂的型態,正式物件導向程式設計的主要觀念,它們允許你隱藏程式的部分功能,限制部份成員的外部存取,達到封裝的目的 和structure不一樣, 包含資料與函式 class class_name { class_member_declaration_list }; 定義的成員預設為私有的(private)

CLASS class class_name { private: class screen declaration_list; { public: protected: }; class screen { private: int m_nWidth; int m_nHeight; int m_x; int m_y; protected: ~screen(); public: screen(); //可有多個不同的constructor void moveto(int, int) void resize(int, int); };

CLASS #include “screen.h” void screen::resize(int w, int h) { m_nWidth=w; m_nHeight=h; } void screen::move(int x, int y)

CLASS screen myScreen; //啟動constructor screen bufScreen=myScreen; //拷貝所有資料成員 screen* ptr= new screen; myScreen=*ptr; ptr=&bufScreen; screen s(20, 90); screen *ps=new screen(20, 90); myScreen.moveto(10,20) ps->moveto(10,20)

this 指標 void screen::resize(int w, int h) { this->m_nWidth=w; this->m_nHeight=h; } screen& screen::xxx() return *this;

static類別成員 有時候同一類別的所有抽象體必須要能存取到同一個共用的變數 class chatroom { private: static int m_nCount; } Const int m_nT;