C++ 與 物件導向 程式設計概念簡介 魏天君 d908301@oz.nthu.edu.tw 2018/12/3.

Slides:



Advertisements
Similar presentations
北京市二级以上医院疾病预防控制工作考核标准(试行) (七)健康教育 北京市疾控中心 健康教育所 李玉青 副主任医师 二〇一一年八月 四、技术考核.
Advertisements

教师队伍建设 组员:王英利 赵香媖 侯娟. 主讲内容 2. 中小学教师队伍建设 1. 职业教育师资队伍建设国际比较 3. 高校教师队伍建设与管理.
绿色开花植物是怎样繁衍后代的? 人类新个体的产生需要经历由雌雄 生殖细胞(即 : 精子和卵细胞)结合, 通过胚胎发育形成新个体的过程。这 个过程是靠生殖系统来完成。 人的生殖是生物界中普遍存在的一 种现象。
面向对象程序设计 、. 第二章 面向对象的分析与设计 学习目标 1 确定系统中的对象 2 确定对象的属性及操作 3 测试对象的有效性 4 区分对象和类 5 了解面向对象的编程和过程化编程之间的区别 6 了解封装的主要好处 7 了解软件开发的主要步骤.
高中物理学习方法. 【状元说经】 胡湛智,是贵州省高考理科状元,他说复习物理 的要点首要的是充分重视课本知识,除了跟上老 师的步调外,自己一定要多钻研课本,课本上的 思考题是复习的纲,再找一些考点解析,认真搞 清每个概念、每个要求,并相应做一定数量的习 题;其次也要特别重视画图的作用,画图有直观、
系統分析與設計 楊子青 H-1 H 、物件導向技術 n 物件導向的基本概念 – 物件、類別 – 封裝、繼承 – 同名異式 ( 多型 ) 、超荷 ( 過載 ) n 物件導向分析與設計及塑模工具 n UML 塑模工具.
人社分中心 职工养老保险业务简介. 基本养老保险分类 1. 职工养老保险 2. 新型农村社会养老保险 3. 城镇居民社会养老保险 (城乡居民社会养老保险) (城镇居民社会养老保险和新型农村社会养老 保险合并实施)
第 9 章 物件的建構.
提 纲 三次考察与改革的回顾 1 学院三周来的新面貌 及下一步工作思路 2 凝心聚力、团结协作、狠抓落实 3.
——以通渭县图书馆青树小项目“携老上网游”为例
<<會計資訊系統課程講義>> 統一塑模語言(UML)語法精要 -- 物件導向概念、需求分析及系統分析
第五章 话语的语用意义(上) 主讲人:周明强.
性教育教學模組設計 主題:身體自主權 台中市忠明國小 巫偉鈴.
整体销售方案 中山市美好物业代理有限公司
2代系統簡介 (招標、領標、開標、決標).
第一章 绪论.
2013浙江省行测专题 密卷解析及备考冲刺 罗 姮.
第8章 面向对象的软件工程 8.1 软件工程的新途径 8.2 面向对象建模 8.3 对象模型 8.4 动态模型 8.5 功能模型.
领会法律精神 理解法律体系 城控313-3班益达组制作.
第一章 資料結構導論 1-1 資料結構簡介 1-2 認識程式設計 1-3 演算法效能分析 1-4 物件導向程式設計與Java.
Ch02物件導向程式設計 物件導向系統分析與設計.
臺中市頭家國小 生理衛生講座 青春期的奧秘 ‧說到青春期,你會想到? ‧班級表現最好的,有獎徵答有優先權。 葉孟娟老師、黃文玲老師.
主办:泰兴市质量强市领导小组办公室 承办:泰 兴 市 市 场 监 督 管 理 局.
理工科系介紹.
301——隆重登场.
第八章 信息系统开发概述.
新阳企业管理系统(标准版)简介 福州鼎瀚软件有限公司 2017/3/15.
怪物城市中的怪物居民,電力來源是人類世界孩童 的尖叫聲。怪物公司的「驚嚇專員」利用衣櫃門, 在夜裡潛入人類孩子的臥室中嚇唬他們並收集他們 的尖叫聲。怪物們相信,人類孩童周身都有劇毒, 只要輕輕一下接觸就致其死命,所以驚嚇專員的工 作也被認為非常危險。不過人類孩子們膽子變得越 來越大,這樣的電力生產方式開始衰退。
社 会 保 险 知 识 培训教材.
第三期 重点管理标准和制度宣贯会 2016年5月12日.
1. 民主社會裡,公民的參與有其重要性,而透過政治參與無法達成下列哪一項目的?
國立金門大學101學年度新生報到暨入學說明會 國立金門大學 學生宿舍 學務處簡介.
第三章 心理安全 广西师范大学 罗蕾.
新办纳税人办税服务指南 (郑州经济技术开发区国税局)
时间管理 -----高一团体辅导.
氣候變遷對南台灣降雨造成之影響 研究背景 結果與討論 研究方法 結論 朱振豪1 、彭康豪1 、莊煌甲1 、邱俊彥2,* 研究目的
依法保护青少年健康成长 1、相关新闻 2、相关法律.
交流一: 您的客户为什么要买医疗产品? 1.人总归会生病,生病肯定要花钱; 2.现在的医疗费用真的很高,承受不起;
济源市国税局网上办税业务介绍 主讲人 办税服务厅 杨武兵 2014年8月1日.
簡 報 大 綱 壹、緣起 貳、執行過程 參、效益.
放鬆心情, 請閉上雙眼, 打開耳朵聽聽。 您聽見了什麼? 水晶音樂 讀書會即將開始唷~.
類別與物件 Class & Object.
軟體工程 -物件導向程式設計與UML系統分析實作
新世代計算機概論 第14章 程式語言.
《生活与哲学》第一轮复习 第七课唯物辩证法的联系观.
01 C++ (Dynamic Array, Sort & STL)
幼兒常見的健康問題(IV) 免疫系統方面的疾病.
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
H、物件導向技術 物件導向的基本概念 物件、類別 封裝、繼承 同名異式(多型) 、超荷(過載) 物件導向分析與設計及塑模工具 UML塑模工具.
Chap 18 類別與物件 夫有土者,有大物也。有大物者,不可以物。 物而不物,故能物物。 明乎物物者之非物也,豈獨治天下百姓而已哉!
CHAPTER 9 建構方法 ROBERT.
物件導向系統分析與設計與UML.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
面向对象程序设计 、.
第九單元 Classes and data abstraction I
软件学院 张 慧 清华大学软件学院.
家長教育 之 電子學習.
順德與香港為空氣污染 而制定政策 組長:曾惠敏 組員:溫琪華 葉子賢 許焯琛 溫煜彬 曾偉南 帶組老師:甘建基老師
C# 基本語法、變數.
電能領域修課流程圖-大學部(甲乙班) 大一上 大一下 大二上 大二下 大三上 大三下 大四上 大四下 畢業出路 *電動機 *電力系統 普通
Object-Oriented Programming in C++ 第二章 类和对象
贏得萬邦的異象.
Review 1~3.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
第一讲 面向对象方法学与信息系统建模.
本章主題 C++的程式結構 資料型態與宣告 算術運算 簡易的輸入輸出指令 程式編譯(Compile)的過程與原理.
厉害了,我的国! 15会计2班团支部 2018年4月20日.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
面向对象程序设计 C++教程 西安工业大学 于帆.
Presentation transcript:

C++ 與 物件導向 程式設計概念簡介 魏天君 d908301@oz.nthu.edu.tw 2018/12/3

如何學好 C++ ? 最重要的是練習!! 知道這些後,沒用過就等於是不知道 當然的確有去… 了解 C語言 了解 物件導向程式設計 了解 既有的物件 MFC .Net 公司 / 私人 所開發的 買來的 知道這些後,沒用過就等於是不知道 2018/12/3

如何成為高手? 光把程式寫對還不夠,要想辦法把它寫得漂亮 (包括良好的寫碼風格、清楚的註解、整體架構制定的技巧、對執行效率的掌握、採用適合的演算法等等) 使用別人寫好的程式碼並不可恥,真正的高手善於重覆利用現成的程式碼或函式庫 現代程式設計的重要理念:寫出易於維護的程式碼是最重要的事 2018/12/3

如何成為高手? 花時間寫程式 2018/12/3

Why OOP? 有效率地產生程式碼 有效率地維護程式碼 泡沫軟體 / 蒸氣軟體 (vaporware) 接手舊的程式碼 – 看得懂嗎? dBASE IV Lotus 1-2-3 以往大部分的美國國防軟體專案 有效率地維護程式碼 接手舊的程式碼 – 看得懂嗎? 共同開發程式碼 – 如何讓切割開來的各個元件順利合作? 2018/12/3

軟體創意的瓶頸:市場 使用者越多,新標準就越難推 使用者不在乎技術的難度; 只在乎好不好用 使得技術難以更新 Web Browser 16-bits programs  32-bits  64-bits 使用者不在乎技術的難度; 只在乎好不好用 多半是很主觀的:順手、方便、可愛好看、…等 – 總之就是 “適合我” 少數是客觀的:免費、快、可靠度 2018/12/3

物件的種類 靜態 動態 C++ Struct & function call Objective – C 物件管理者 物件的行為在編譯後,轉化成低階結構化的程式碼 快速 藉由最佳化的過程使得OOP程式的執行效率接近傳統的程式 但是別用物件寫 Driver 動態 Objective – C 物件管理者 物件始終保持原貌,加大了物件的彈性 慢 物件可以在執行時取得型別資訊、製造新的method、製造新物件 – 代價就是:慢 2018/12/3

什麼是物件? 真實事物的抽象對應 真實事物:凡是生活上所用到的任何東西 抽象(abstract):將事物的性質抽出 黃金獵犬  狗  動物 黃金獵犬  寵物  家庭成員 黃金獵犬  …  … 如何把 “真實事物”抽象化全憑當時的需要 這往往也是物件導向分析(OOA)的一個重要部份 2018/12/3

物件的六大特性 為了模擬世界,物件必須有「資料」與「行為」兩大部分,與下列六個特性: Page 39的圖 要有資料結構 要有狀態 要有行為 要可被識別 要可被創造與消滅 要有生命週期 Page 39的圖 2018/12/3

Class 與 Instance Class Instance Object 由一群具有相同資料結構與相同行為的物件,在依據某個特性分類後,所形成的集合 類似 data type / Struct int, float, double 貓, 狗, 人 Instance 由 class所定義的某個具有相同資料結構與行為的物件 類似 某類的變數;也就是要著明 “學名” int i, j, k; //中的 i, j, k 都是整數變數 float x, y, z; //中的 x, y, z 都是浮點數變數 Kitty 是一隻貓; Snoopy 是一條狗; Peter 是一位人 Object Instance 的統稱 類似 所有變數的總集合;不用特別提及 “學名” 上方的 i, j, k, x, y, z 都是變數 Kitty,Snoopy,Peter 都是生物 2018/12/3

介面與資訊隱藏 介面 資訊隱藏(Information hiding) 製作物件的課題之一就是決定資訊隱藏的對象(包含資料與行為細節) 是物件的保護層 所有的訊息(message)都是送到介面來 資訊隱藏(Information hiding) 除非萬不得已,否則最好將物件的資料與行為細節隱藏 外界要對物件進行操作,就必須透過介面 製作物件的課題之一就是決定資訊隱藏的對象(包含資料與行為細節) 2018/12/3

Message與Method Message Method Page 48 的四點注意 物件之間用來溝通的工具 例如:MS Windows的message-driven 機制 透過 message 來驅動物件的 method。但是不用了解物件是如何執行的 – 資訊隱藏 訊息參數 – 是一種參數(parameter),method 依其內容會執行不同的動作 訊息參數不同的值對應method不同的動作 Method 被介面包裝在物件內部的行為與動作程序 每個 method 都對應一種 message 反之,每個 message驅動一個 method Message 送抵物件後,物件會選擇適當的 method 來動作 用來保留較大的彈性 Page 48 的四點注意 2018/12/3

抽象化的分類 抽象化資料:例如抽象化資料型別 抽象化控制:例如分支控制、例外處理 抽象化程序:例如參數化、鏈結處理 將實際的資料改為軟體的資料,使得在處理上能更佳的方便 例如:C++ 的 class、class的各種繼承、代理關係 抽象化控制:例如分支控制、例外處理 將實際的流程改為軟體中的流程控制與例外處理 例如: C++ 的 Loop、condiotion、錯誤處理 抽象化程序:例如參數化、鏈結處理 「如何去完成」的抽象化結果;function call 例如: C++ 的虛擬函式、動態連結、範例模板 2018/12/3

OOP的三把權杖 Brad Cox 提出的 Software-IC需要下列特性 繼承性、封裝性、動態連結 物件與message 繼承性(inheritance) 封裝性(encapsulation) 動態連結(dynamic binding) 繼承性、封裝性、動態連結 可以說是OOP最重要的三大基石、三把權杖 2018/12/3

繼承性(inheritance) Class 重複的地方得以濃縮 可以建立整套的知識體系與分工階層模型 例如:「貓」跟「狗」都是「動物」,所以被貓狗繼承的動物負責製作兩者都有的部分 資料:體型 行為:跑、跳 可以建立整套的知識體系與分工階層模型 讓同心協力的物件群能分層負責地完成每項工作 2018/12/3

封裝性(encapsulation) 降低軟體整體的複雜度 好的介面是小而美的 藉由「介面」所達成的「資訊隱藏」可以大大地減少物件之間不必要的關聯性 同時減少物件之間的相互干擾 在修改物件時,不會影響到其他物件 好的介面是小而美的 小:只對外開啟必要的溝通管道 美:簡而言之就是方便好用 2018/12/3

動態連結(dynamic binding) 系統再程式執行時(run-time),才將message和method連結在一起。而非在編譯的時候,就將它們的關係固定下來 動態連結時,message和method的連結取決於message的值 送出 message後,自動會有合適的 method被執行 – 較有彈性 靜態連結:各 function call 只知道各個參數的型態而不是值 – 較有效率 2018/12/3