Microsoft PowerPoint - 13_ClassAndObj.ppt

Similar documents
Microsoft PowerPoint - P766Ch06.ppt

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

Visual Basic D 3D

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

運算子多載 Operator Overloading

投影片 1

(procedure-oriented)?? 2

Microsoft Word - 物件導向編程精要.doc

<4D F736F F D20B1D0A87CB3A1A7EFB5BDAE76B8EAB867B64FB8C9A7555FABCAADB1>

Microsoft PowerPoint - VB14.ppt

Microsoft Word - ch04三校.doc

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

Strings

Visual Basic 2005 程式語言

穨文件1

Microsoft Word - JAVA Programming Language Homework I ans

Excel VBA Excel Visual Basic for Application

ActiveX Control

untitled

Microsoft Word - 小心翼翼的二十一點N.doc

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

untitled

壹 前 言 解 開 2048 的 謎 一 研 究 動 機 最 近 我 們 都 很 熱 衷 於 2048 這 款 遊 戲, 遊 戲 方 法 非 常 簡 單, 但 是 想 要 達 成 2048 卻 很 難, 每 次 只 差 臨 門 一 腳 就 能 達 到 2048, 因 此 都 沒 有 成 功 過 於

PowerPoint 簡報

<4D F736F F D20AC4FBDBDA4FBB67DA96CAABA2DA743A67EAFC5AAA95FA7B9BD5A5F2E646F63>

ex

c_cpp

Microsoft PowerPoint - L17_Inheritance_v4.pptx

投影片 1

《大话设计模式》第一章

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

( 总 第 1073 期 ) 浙 江 省 人 民 政 府 主 办 2015 年 3 月 17 日 出 版 省 政 府 令 省 政 府 文 件 目 录 浙 江 省 大 型 群 众 性 活 动 安 全 管 理 办 法 ( 浙 江 省 人 民 政 府 令 第 333 号 ) (3) 浙 江 省 人 民 政

<4D F736F F D B0D3B77EC3FEA7DEC3C0C476C1C9A5BFA6A1B8D5C3442DB57BA6A1B35DAD702DBEC7ACEC2E646F6378>

ThreeDtunnel.doc

Microsoft PowerPoint - OPVB1基本VB.ppt

1.5招募说明书(草案)

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 一 一 般 公 共 服 务 支 出 二

第 一 节 认 识 自 我 的 意 义 一 个 人 只 有 认 识 自 我, 才 能 够 正 确 地 认 识 到 自 己 的 优 劣 势, 找 出 自 己 的 职 业 亮 点, 为 自 己 的 顺 利 求 职 推 波 助 澜 ; 一 个 人 只 有 认 识 自 我, 才 能 在 求 职 中 保 持

Microsoft Word - Learn Objective-C.doc

多層次傳銷與獎金系統

untitled

投稿類別:電子工程類

山东建筑大学学分制管理规定(试行)

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f

VB控件教程大全

Microsoft PowerPoint - 11_Templates.ppt

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

第七章 繼承

untitled

untitled

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

VB程序设计教程

IsPostBack 2

Microsoft Word cppFinalSolution.doc

第二章 簡介類別

Microsoft Word - 01.DOC

untitled

untitled

untitled

Microsoft PowerPoint - chap08.ppt

CC213

epub83-1

Microsoft Word - chap10.doc

D C 93 2

第1章

MVB-1001.DOC

PowerPoint Presentation

第26期

无类继承.key

TC35短信发送程序设计

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

文档 3

用户大会 论文集2.2.doc

Wy159.mps

第十章 虛擬函數 (Virtual Functions)

3 Driver do Microsoft Access (*.mdb) hisdata IFIX 1.4

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

Microsoft PowerPoint - plan08.ppt

相 应 功 能 (5) 再 将 Boy 类 作 为 Girl 类 的 友 元 类, 在 Boy 类 的 某 成 员 函 数 VisitGirl(Girl & ) 中 访 问 Girl 类 的 私 有 成 员, 观 察 编 译 器 给 出 的 信 息 ( 6 ) 删 除 两 个 类 中 的 函 数 V

(1) 80

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B


RunPC2_.doc

untitled

第七讲 继承与多态

投影片 1

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

Microsoft PowerPoint - Chap03.ppt [相容模式]

, 随 后 成 为 一 个 艺 术 爱 好 者 10 月 1 日, 星 期 三 : 晚 上, 彼 得 邀 请 我 到 老 维 克 戏 院 看 克 莉 斯 汀 史 考 特 汤 马 斯 担 纲 演 出 的 伊 莱 克 特 拉 她 曾 说 过 : 在 死 之 前, 我 将 演 出 伊 莱 克 特 拉 眼

1 1 Excel VBA 說明 ( ) (_) STEP4 Excel 2 STEP5 A1 1 B2 2 C3 3 STEP6 A1 STEP7 > > 1-11

untitled

FY.DOC

Strings

RUN_PC連載_10_.doc

untitled

Transcription:

Visual Basic 2005 (VB.net 2.0) 程式設計 講師 : 戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所

第十三章 物件與類別 物件與類別 物件導向程式設計 物件與類別的建立

物件與類別

物件 (object) Ex. 人 屬性 (property) 身高 體重 血型 方法 (method) 走路 跑步 訊息 (message) 交談 事件 (event) 被揍了一拳 物件要能被識別 名字

類別 (class) 類別是一種抽象的資料型態 物件是屬於該種資料型態的實體物件 類別不是物件, 也不能用來執行 透過實體物件透過類別的宣告而產生

物件導向程式設計

物件導向程式設計 物件導向程式設計 (Object-Oriented Programming), 簡稱 OOP 以物件為程式設計的重心, 著重於物件的設計, 處理物件間的溝通 利用類別來描述物件的特性

物件導向程式設計的特性 抽象化 (Abstraction) 封裝 (Encapsulation) 繼承 (Inheritance) 多型 (Polymorphism) 動態繫結 (Dynamic biding)

抽象化 (Abstraction) 只注重物件和外界溝通的行為 與資料內部執行細節沒有關係

封裝 (Encapsulation) 將物件私有的部份封裝在物件的內部, 而使用者只能藉由物件所提供的方法 屬性來操控物件 保持物件的完整性

繼承 (Inheritance) 子類別 A 繼承父類別 B 一個物件 A 得到另一個物件 B 一切特性的過程 A 類別被稱為 : 子類別 (Child Class) 次類別 (Sub Class) 衍生類別(Derived Class) B 類別被稱為 : 父類別 (Parent Class) 超類別 (Super Class) 基礎類別(Base Class)

繼承 (Inheritance) 透過繼承的機制, 可以讓新的類別可以延伸更強的功能 使程式具有再用性和擴充性

多型 (Polymorphism) 又稱 同名異式 使用不同型態的物件, 而使用相同的函數所產生的結果

動態繫結 (Dynamic biding) 呼叫物件的方法 靜態繫結 編譯階段就將物件與方法繫結在一起 動態繫結 程式執行階段才決定繫結

物件與類別的建立

建立類別 (class) Class 類別名 End Class Ex. Class human End Class

命名空間 (Namespace) Namespace 空間名字 Class 類別名 End Class End Namespace Ex. Namespace Hana Class human End Class End Namespace

建立屬性 (property) Private 內屬性名 As 資料型別 Public Property 外屬性名 ( ) As 資料型別 Get Return 內屬姓名 End Get Set (ByVal Value As 資料型別 ) 內屬性名 = Value End Set End Property

建立屬性 (property) Ex. Namespace Hana Class elf Private m_posz As Integer Public Property posz() As Integer Get Return m_posz End Get Set (ByVal Value As Integer) If Value > 1000 Then Value = 1000 Elseif Value < 0 Then Value = 0 End If m_posz = Value End Set End Property End Class End Namespace

建立唯讀 (ReadOnly) 屬性 Private 內屬性名 As 資料型別 Public ReadOnly Property 外屬性名 ( ) As 資料型別 Get Return 內屬姓名 End Get End Property

建立唯寫 (WriteOnly) 屬性 Private 內屬性名 As 資料型別 Public WriteOnly Property 外屬性名 ( ) As 資料型別 Set (ByVal Value As 資料型別 ) 內屬性名 = Value End Set End Property

建立方法 (method) 副程式 Public Sub 方法名 ( 參數 s) End Sub 程序覆載 (Overloading) 建構 (Constructor) 解構 (Destructor)

程序覆載 (Overloading) 多型 Public Overloads Sub 方法名 ( 參數 ) Ex. Public Overloads Sub fly() me.posz = me.posz + 1 End fly Public Overloads Sub fly(byval addz As Integer) me.posz = me.posz + addz End fly

建構 (Constructor) 當程式執行到 New 類別名 時, 會產生實體物件, 並執行物件的建構式 可用來作物件的初始化動作 建構式的名稱一定叫 New Public Sub New( 參數 s) Ex. Public Sub New() me.posz = 0 End fly

解構 (Destructor) 當物件被消滅的時候, 會執行物件的解構式 可用來作物件結束的動作 解構式的名稱一定叫 Finalize Public Sub Finalize( 參數 s) Ex. Public Sub Finalize() Msgbox( Goodbye my friends ) End fly

建立事件 (event) 在類別中只定義事件的名稱與參數 事件程序是在物件使用時才加以定義 事件宣告 Public Event 事件名 ( 參數 s) 事件觸發 RaiseEvent 事件名 ( 參數 s)

建立事件 (event) Ex. Public Event tired() Public Sub fly() If me.posz > 2000 Then RaiseEvent tired() Else me.posz = me.posz + 1 End If End fly

共用成員 類別所產生的物件都可以一起共用的成員 公用成員在類別中只會儲存一份 共用成員不需要經過 new 敘述來建立物件就可以直接透過類別來使用 Shared 變數名稱 As 變數型別

繼承與多型

繼承 (Inheritance) 子類別 A 繼承父類別 B 一個物件 A 得到另一個物件 B 一切特性的過程 A 類別被稱為 : 子類別 (Child Class) 次類別 (Sub Class) 衍生類別(Derived Class) B 類別被稱為 : 父類別 (Parent Class) 超類別 (Super Class) 基礎類別(Base Class)

繼承 (Inheritance) 透過繼承的機制, 可以讓新的類別可以延伸更強的功能 子類別不需要重新撰寫父類別中相同的程式碼, 只需在子類別中呼叫父類別的屬性 方法即可

類別成員的存取限制 Public Private Protect 讓子類別也可以做存取

建立子類別 繼承 (Inheritance) Class 子類別 Inherits 父類別 End Class Ex. Class child Inherits human End Class

子類別存取父類別的方法 屬性 MyBase. 方法 MyBase. 屬性

子類別覆寫父類別的方法 屬性 Overridable: 父類別允許被子類別同名的方法 屬性覆蓋 Protected 內屬性名 As 資料型態 Public Overridable Property 外屬性名 () As 資料型態 Public Overridable Sub 方法名 ( 參數 ) Overrides: 子類別重新定義父類別的方法 Public Overrides Property 外屬性名 () As 資料型態 Public Overrides Sub 方法名 ( 參數 )

多型 (Polymorphism) 又稱 同名異式 使用不同型態的物件, 而使用相同的函數所產生的結果 利用父類別的物件參考來選擇所要執行子類別物件實體的方法

多型 利用父類別的物件參考, 來選擇所要執行子類別物件實體的方法

繼承與多型 Public Class Cal Private m_x As Integer Private m_y As Integer Public Property X() As Integer Get Return m_x End Get Set(ByVal Value As Integer m_x = Value End Set End Property

繼承與多型 Public Property Y() As Integer Get Return m_y End Get Set(ByVal Value As Integer m_y = Value End Set End Property Public Overridable Function Answer() As Integer End Function End Class

繼承與多型 Public Class CalAdd Inherits Cal Public Overrides Function Answer() As Integer Return X+Y End Function End Class

繼承與多型 Public Class CalSub Inherits Cal Public Overrides Function Answer() As Integer Return X-Y End Function End Class

繼承與多型 Public Class Form1 Dim mycal As Cal Dim mycaladd As New CalAdd() Dim mycalsub As New CalSub() Private Sub ButtonAdd_Click( ) Handles mycal = mycaladd End Sub Private Sub ButtonSub_Click( ) Handles mycal = mycalsub End Sub

繼承與多型 Private Sub ButtonCompute_Click( ) Handles mycal.x = Val(textboxX.text) mycal.y = Val(textboxY.text) textboxans.text = mycal.answer End Sub End Class

上機操作 延伸投影片範例, 執行加 減 乘 除

下課! 回家小心 ~