Course Introduction Class. 1-2 軟體中的類別 (Class ) 類別就是物件的藍圖 (blueprint) 或原型 (prototype) , 裡面定義著物件的變數與方法。 類別 : 具有共同特性的一組物件.

Slides:



Advertisements
Similar presentations
1 生物計算期末作業 暨南大學資訊工程系 2003/05/13. 2 compare f1 f2  只比較兩個檔案 f1 與 f2 ,比完後將結果輸出。 compare directory  以兩兩比對的方式,比對一個目錄下所有檔案的相 似程度。  將相似度很高的檔案做成報表輸出,報表中至少要.
Advertisements

Divide-and-Conquer. 什麼是 divide-and-conquer ? Divide 就是把問題分割 Conquer 則是把答案結合起來.
6-1 指標簡介 6-2 指標與陣列 6-3 動態配置記憶體 6-4 本章綜合練習
Introduction to Java Programming Lecture 13 Classes I OO Programming.
建立使用案例敘述 --Use Case Narrative
第 10 章 Java 的執行緒 10-1 執行緒的基礎 10-2 Java 執行緒的使用方法 10-3 Java 執行緒的同步 10-4 管道串流的執行緒.
第七章 抽樣與抽樣分配 蒐集統計資料最常見的方式是抽查。這 牽涉到兩個問題: 抽出的樣本是否具有代表性?是否能反應出母體的特徵?
“Rule” By OX. By Check CREATE TABLE 員工薪資 ( 編號 int IDENTITY PRIMARY KEY, 薪資 smallmoney, CHECK ( 薪資 > 0 AND 薪資
3Com Switch 4500 切VLAN教學.
Reference, primitive, call by XXX 必也正名乎 誌謝 : 部份文字取於前輩 TAHO 的文章.
Introduction to Constructor, Overloading, and Accessibility CS340100, NTHU Yoshi.
如何將數字變成可用之資訊 現代化資料處理與應用概念. 如何將數字變成可用之資訊 人最容易接受的訊息是圖像化資訊。 在一堆數字中,要進行比較分析,一般會使用表格形 式計算與分析。 所以一般我們會將數字依關聯性, 轉換成表格計算與分析。 此表格一般稱試算表或稱表格。 再將結果轉換為圖表,進行比較與分析。
What is static?. Static? 靜態 ? class Test { static int staticX; int instanceX; public Test(int var1, int var2) { this.staticX = var1; this.instanceX =
Reference, primitive, call by XXX 必也正名乎 誌謝 : 部份文字取於前輩 TAHO 的文章 CS340100, NTHU Yoshi.
建立靜態資料成員 關鍵字: static 靜態資料成員不屬於特定物件,而是該類物件 所共同擁有的,可做為類別範圍裡的靜態變數。
: OPENING DOORS ? 題組: Problem Set Archive with Online Judge 題號: 10606: OPENING DOORS 解題者:侯沛彣 解題日期: 2006 年 6 月 11 日 題意: - 某間學校有 N 個學生,每個學生都有自己的衣物櫃.
STAT0_sampling Random Sampling  母體: Finite population & Infinity population  由一大小為 N 的有限母體中抽出一樣本數為 n 的樣 本,若每一樣本被抽出的機率是一樣的,這樣本稱 為隨機樣本 (random sample)
1 政大公企中心產業人才投資課程 -- 企業決策分析方法 -- 黃智聰 政大公企中心產業人才投資課程 課程名稱:企業決策分析方法 授課老師:黃智聰 授課內容:利用分公司之追蹤資料進行企業決策分析 參考書目: Hill, C. R., W. E. Griffiths, and G. G. Judge,
第 13 章 常數、靜態成員與朋友關 係 13-1 常數物件與成員 13-1 常數物件與成員 13-2 物件成員與巢狀類別 13-2 物件成員與巢狀類別 13-3 靜態成員資料與函數 13-3 靜態成員資料與函數 13-4 朋友關係 13-4 朋友關係.
1. 假設以下的敘述為一未提供 “ 捷徑計算 ” 能力的程式段,試用程 式設計的技巧,使此敘述經此改 寫的動作後,具有與 “ 捷徑計算 ” 之 處理方法相同之處理模式。 if and then E1 else E2 endif.
第 18 章 名稱空間與例外處理 18-1 名稱空間 18-1 名稱空間 18-2 例外處理 18-2 例外處理.
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
1 政治大學東亞所選修 -- 計量分析與中國大陸研究黃智聰 政治大學東亞所選修 課程名稱:計量分析與中國大陸研究 (量化分析) 授課老師:黃智聰 授課內容:時間序列與橫斷面資料的共用 參考書目: Hill, C. R., W. E. Griffiths, and G. G. Judge, (2001),
JAVA 程式設計與資料結構 第十章 GUI Introdution III. File Chooser  File Chooser 是一個選擇檔案的圖形介面, 無論我們是要存檔還是要開啟檔案,使 用這個物件都會讓我們覺得容易且舒適。
第 7 章 程序與函數 7-1 模組化程式設計 7-1 模組化程式設計 7-2 VB.NET 的程序與函數 7-2 VB.NET 的程序與函數 7-3 程序與函數的變數範圍 7-3 程序與函數的變數範圍 7-4 VB.NET 常用的內建函數 7-4 VB.NET 常用的內建函數 7-5 遞迴函數 7-5.
Introduction to Java Programming Lecture 5: Using Java Classes : String & Math Spring 2009.
第 1 章 PC 的基本構造. 本章提要 PC 系統簡介 80x86 系列 CPU 及其暫存器群 記憶體: Memory 80x86 的分節式記憶體管理 80x86 的 I/O 結構 學習組合語言的基本工具.
Chapter 13 塑模靜態觀點:物件圖 Static View : Object Diagram.
Introduction to Java Programming Lecture 17 Abstract Classes & Interfaces.
最新計算機概論 第 5 章 系統程式. 5-1 系統程式的類型 作業系統 (OS) : 介於電腦硬體與 應用軟體之間的 程式,除了提供 執行應用軟體的 環境,還負責分 配系統資源。
3-3 使用幾何繪圖工具 Flash 的幾何繪圖工具包括線段工具 (Line Tool) 、橢圓形工具 (Oval Tool) 、多邊星形 工具 (Rectangle Tool) 3 種。這些工具畫出 來的幾何圖形包括了筆畫線條和填色區域, 將它們適當地組合加上有技巧地變形與配 色, 不但比鉛筆工具簡單,
Matlab Assignment Due Assignment 兩個 matlab 程式 : Eigenface : Eigenvector 和 eigenvalue 的應用. Fractal : Affine transform( rotation, translation,
Chapter 20 塑模動態觀點:狀態圖 Statechart Diagram. 學習目標  說明狀態圖的目的  定義狀態圖的基本記號  展示狀態圖的建構  定義活動、內部事件及遞延事件的狀態 圖記號.
: Ahoy, Pirates! ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11402: Ahoy, Pirates! 解題者:李重儀 解題日期: 2008 年 8 月 26 日 題意:有一個海盜島有 N 個海盜,他們的編號 (id)
: Multisets and Sequences ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11023: Multisets and Sequences 解題者:葉貫中 解題日期: 2007 年 4 月 24 日 題意:在這個題目中,我們要定義.
:Nuts for nuts..Nuts for nuts.. ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 10944:Nuts for nuts.. 解題者:楊家豪 解題日期: 2006 年 2 月 題意: 給定兩個正整數 x,y.
資料結構實習-一 參數傳遞.
6-2 認識元件庫與內建元件庫 Flash 的元件庫分兩種, 一種是每個動畫專 屬的元件庫 (Library) ;另一種則是內建元 件庫 (Common Libraries), 兩者皆可透過 『視窗』功能表來開啟, 以下即為您說明。
政治大學公企中心必修課-- 社會科學研究方法(量化分析)--黃智聰
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2008.
計算機概論 演算法與程式語言 李明山.
公用品.  該物品的數量不會因一人的消費而受到 影響,它可以同時地被多人享用。 角色分配  兩位同學當我的助手,負責:  其餘各人是投資者,每人擁有 $100 , 可以投資在兩種資產上。  記錄  計算  協助同學討論.
第 9 章 TSR 程式基本教練. 本章提要 TSR 程式 以熱鍵 (Hot key) 叫用 TSR 程式 Clock 中斷 int 08h 、 int 1ch DOS reentrant 的問題 有用的 TSR 程式.
Section 4.2 Probability Models 機率模式. 由實驗看機率 實驗前先列出所有可能的實驗結果。 – 擲銅板:正面或反面。 – 擲骰子: 1~6 點。 – 擲骰子兩顆: (1,1),(1,2),(1,3),… 等 36 種。 決定每一個可能的實驗結果發生機率。 – 實驗後所有的實驗結果整理得到。
Teacher : Ing-Jer Huang TA : Chien-Hung Chen 2015/6/25 Course Embedded Systems : Principles and Implementations Weekly Preview Question CH 2.4~CH 2.6 &
函式 Function Part.2 東海大學物理系‧資訊教育 施奇廷. 遞迴( Recursion ) 函式可以「呼叫自己」,這種動作稱為 「遞迴」 此程式的執行結果相當於陷入無窮迴圈, 無法停止(只能按 Ctrl-C ) 這給我們一個暗示:函式的遞迴呼叫可以 達到部分迴圈的效果.
演算法 8-1 最大數及最小數找法 8-2 排序 8-3 二元搜尋法.
逆向選擇和市場失調. 定義  資料不對稱 在交易其中,其中一方較對方有多些資料。  逆向選擇 出現在這個情況下,就是當買賣雙方隨意在 市場上交易,與比較主動交易者作交易為佳 。
845: Gas Station Numbers ★★★ 題組: Problem Set Archive with Online Judge 題號: 845: Gas Station Numbers. 解題者:張維珊 解題日期: 2006 年 2 月 題意: 將輸入的數字,經過重新排列組合或旋轉數字,得到比原先的數字大,
第 17 章 樣板 17-1 樣板的基礎 17-1 樣板的基礎 17-2 樣板函數 17-2 樣板函數 17-3 樣板類別 17-3 樣板類別 17-4 非型態參數的樣板類別 17-4 非型態參數的樣板類別 17-5 樣板類別的繼承 17-5 樣板類別的繼承 17-6 特化樣板與靜態成員 17-6 特化樣板與靜態成員.
Chapter 10 m-way 搜尋樹與B-Tree
演算法課程 (Algorithms) 國立聯合大學 資訊管理學系 陳士杰老師 Course 7 貪婪法則 Greedy Approach.
JAVA 程式設計與資料結構 第十六章 Hash Tables. Introduction Hash Tables 結構為一個 Array ,稱之為 Bucket array 。 如果想要新增一個物件,要根據這個物件的特性 將其加入 Hash Table 內。 Bucket Array 用 A 來代替,其.
概念性產品企劃書 呂學儒 李政翰.
Probability Distribution 機率分配 汪群超 12/12. 目的:產生具均等分配的數值 (Data) ,並以 『直方圖』的功能計算出數值在不同範圍內出現 的頻率,及繪製數值的分配圖,以反應出該 機率分配的特性。
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2009.
Teacher : Ing-Jer Huang TA : Chien-Hung Chen 2015/6/30 Course Embedded Systems : Principles and Implementations Weekly Preview Question CH7.1~CH /12/26.
函式 Function 東海大學物理系‧資訊教育 施奇廷. 函式簡介 當程式越來越大、越複雜時,程式的維護、 除錯會變得更困難,此時必須引入函式來 簡化程式或將程式分段,將程式重複的部 分改寫為函式,將程式「模組化」 這種作法有下列優點:節省程式發展的時 間、邏輯容易瞭解、程式容易除錯、可分 工合作完成程式.
Visual C++重點複習.
1 Introduction to Java Programming Lecture 3 Mathematical Operators Spring 2008.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2010.
Microsoft Excel.
Introduction to Java Programming Lecture 16 Super and Sub Classes.
: Finding Paths in Grid ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11486: Finding Paths in Grid 解題者:李重儀 解題日期: 2008 年 10 月 14 日 題意:給一個 7 個 column.
著作權所有 © 旗標出版股份有限公司 第 14 章 製作信封、標籤. 本章提要 製作單一信封 製作單一郵寄標籤.
幼兒行為觀察與記錄 第八章 事件取樣法.
1 Introduction to Java Programming Lecture 3 Mathematical Operators Spring 2009.
CH 14-可靠度工程之數學基礎 探討重點 失效時間之機率分配 指數模式之可靠度工程.
第 1 章 PC 的基本構造. 本章提要 PC 系統簡介 80x86 系列 CPU 及其暫存器群 記憶體: Memory 80x86 的分節式記憶體管理 80x86 的 I/O 結構 學習組合語言的基本工具.
> Polymorphism. Polymorphism - 2 多型的功能 多型提供了「介面與實作分離」的一個重 要性,能將 what (是什麼)自 how (怎麼 做)之中抽離。 多型( polymorphism )除去型別之間的耦 合關係。
Presentation transcript:

Course Introduction Class

1-2 軟體中的類別 (Class ) 類別就是物件的藍圖 (blueprint) 或原型 (prototype) , 裡面定義著物件的變數與方法。 類別 : 具有共同特性的一組物件

1-3 類別與物件

1-4 物件 vs. 類別 類別代表物件的藍圖,物件是真實存在可以使 用的物體。 在軟體的世界中,軟體的物件已是模型化真實 世界的物件或概念,所以物件這個名詞有時候 會拿來對應到類別與實體。

1-5 類別程式碼 public class Person { String m_name; boolean m_gender; public void name(){ System.out.print(“ 姓名 -->”+ m_name); } public void gender(){ System.out.print(“ 性別 -->”+ m_gender); } public void name(String name){ m_name=name; } public void gender(boolean gender){ m_gender=gender; }

1-6 類別程式碼 public class App{ public static void main(String argv[]){ Person myPerson=new Person(); myPerson.name(“john”); myPerson.gender(true); myPerson.name(); myPerson.gender(); }

1-7 設定資料的存取性 位置 private 無修飾 字元 protectedpublic 同一類別  同一套件中的子類別  同一套件,但不是子 類別  不同套件的子類別 ( 之 instance)  不同套件,也不是子 類別 

1-8 建構子( Constructor ) 建構子在物件建立時執行 在建構子中初始化( Initialize )相關成員 建構子的名稱必需和類別的名稱相同,建構子可 以有傳入的參數,但不能自訂回傳的型態 。 class Vehicle{// 定義的類別 private int wheel;// 定義一個實體變數 public Vehicle(){// 類別的建構子 wheel = 4; }

1-9 參數化的建構子 類別可以定義多個建構子,每一個建構子的參數型 別或參數數量不同 class Vehicle{// 定義的類別 private int wheel;// 定義一個實體變數 Vehicle(){// 類別的建構子 wheel = 4; } Vehicle(int n){// 定義有參數的建構子 wheel = n; } Vehicle newCar1 = new Vehicle();// 實體化一個類別 Vehicle newCar2 = new Vehicle(6);// 實體化一個類別,並傳入參數

1-10 模組化 (Modularity) 容易維護 – 原始碼可以獨立維護,不需要牽扯到其他物件 的程式碼 容易整合 – 一個物件可以容易地在系統中傳遞 – 比如:你可以把腳踏車給另外一個人,腳踏車 也可以動作

1-11 資訊隱藏 (Information hiding) 資訊保護 – 物件中有一些變數需要被保護,有權限問題或 資料不可以隨便被更改 容易使用,不需要知道實作細節 – 比如:你不需要瞭解打檔的機能怎麼實作,也 可以騎腳踏車

1-12 訊息( Message )觀念 物件可以透過訊息與其他物件互動 – 例如:學生要求成績(學生與成績物件) 單一個物件並沒有很大的用處 訊息是啟動物件的工具 在接收物件接到訊息後,就會執行指定的方法, 然後回應訊息給發送物件(也可能不回應),稱 為「傳回值」( Return Value ),

1-13 訊息 (Message) 訊息提供兩個重要的功能 – 物件的行為由其方法來表達,訊息的傳遞 (Message passing) 代表串接物件間行為的互動 – 物件不需要在同一個程序 (Process) 或電腦中,也 可以送收訊息

1-14 訊息( Message )觀念 - 循序操作 物件送出的訊息後,接收物件可能有兩種反應 – 執行方法後就產生回應訊息 – 觸發另一個訊息,繼續送出一系列訊息給其它 物件,合作來完成整個操作,此稱為「循序操 作」( Sequential Operation )

1-15 訊息( Message )過載 物件是依接收的訊息類型來執行不同的方法 – 名稱重用 – 只需訊息不同,足以讓物件辨識,一樣可以執行同名 的方法 例如:執行 Utility 物件的 max() 方法的訊息,如下 所示: Utility.max(23, 45); Utility.max(23, 45, 87); Utility.max(‘a’, ‘z’);

1-16 訊息( Message )多形 「多形」( Polymorphism ) – 另一種名稱再用 – 各物件針對同一個訊息 ( 呼 叫同一名稱的方法 ) ,卻擁 有不同的反應 在人類的思維中,對於同一 種工作,就算對象不同,也 會使用同名的操作。 針對不同的物件,卻擁有名 稱一樣的方法,實際執行有 不同的意義 (Semantic) 對於人類來說打球雖然都 是 play() ,但是實際的接收 物件不同,所以會執行到 不同的物件實作

Polymorphism Container container = new 水桶 (); Container container = new 杯子 (); Container container = new 碗 (); 不管真實的物件是什麼,我們都可以使用 container.getCapacity() 來得到容積,因為他們 都是容器,但是我們無需知道他們到底是什麼實 體 ( 不需知道是水桶,杯子,還是碗 ) 1-17

1-18 類別( Class )繼承 「繼承」( Inheritance ) – 提供了一個自然的重用機制來組織軟體元件 – 例如:學生和老師都是人,可以先定義 Person 類別模 擬人類,然後擴充 Person 類別建立 Student 和 Teacher 類別模擬學生和老師 一個類別繼承其父類別 (superclass) 中所有屬性 與行為

1-19 繼承的目的 類別介面重用 – 子類別可以基礎於父類別的所有行為 程式碼重用 程式設計師可以實作某些常用的部分,保留彈性 給其他特殊應用發揮 – 子類別可以發展出自己特殊的行為 將原有的行為覆寫 (Overriding)

1-20 類別程式碼 public class Person { String m_name; boolean m_gender; public void name(){ System.out.print(“ 姓名 -->”+ m_name); } public void gender(){ System.out.print(“ 性別 -->”+ m_gender); } public void name(String name){ m_name=name; } public void gender(boolean gender){ m_gender=gender; } ? Why we need this method!!

1-21 類別程式碼 public class Student extends Person { String m_ID; public void ID(){ System.out.print(“ 學號 -->”+ m_ID); } public void ID(String ID){ m_ID=ID; }

1-22 類別程式碼 public class App{ public void main(String argv[]){ Student myStudent=new Student(); // 如果寫 Person myStudent = new Student(); 呢 ? myStudent.name(“john”); myStudent.gender(true); myStudent.ID(“123456”); myStudent.name(); myStudent.gender(); myStudent.ID(); }

1-23 建立資料存取的方法 避免直接存取內部變數 Setter : 設定資料成員的值 public void setWheel(int n){// 設定 wheel 的值 wheel = n; } Getter : 取出資料成員的值 public int getWheel(){// 傳回 wheel 的值 return wheel; }

1-24 類別成員的覆寫 (Override) 「覆寫 (Override) 」又稱為「改寫」、「覆蓋」、 「重載」。 在子類別中改寫繼承自父類別的方法 子類別中也可以定義和父類別相同的資料成員。 在子類別中定義和父類別中相同的資料成員時, 父類別中的資料成員會被隱藏 (hide)

1-25 物件的多型的重要性 我們有時候希望某個物件被當作 A 類別使用,而 在另一種場合當作 B 類別使用,這就是物件「多 型」的概念。 物件的角色只能在父類別或是子類別中轉換,不 能轉換成沒有繼承關係的其他類別

1-26 this 、 super 與遮蔽效應 遮蔽效應:在方法中區域變數會取代全域變數 使用「 this 」來解決問題 class Car{ public int wheel; Car(int wheel){ wheel = wheel;} } class Car{ public int wheel; Car(int wheel){ this.wheel = wheel;} }

1-27 this 、 super 與遮蔽效應 this 的使用 – 「 this 」代表物件本身,只能在類別中使用,它是用 來參考物件實體本身,也就是說:「 this 」儲存的是 物件本身的位址。 – 「 this 」常用於方法之中,區別資料成員和參數 。 – 「 this 」也用在建構子中呼叫另一個建構子,以避免 重複撰寫初始資料成員的程式碼 。 使用「 this() 」的方式呼叫另一個建構子的語法只 能使用於建構子中 不可以在建構子中重複的呼叫「 this() 」

1-28 super super 的使用 – 「 super 」參考目前類別的父類別,語法如下: – 使用 super() 呼叫父類別的建構子 如果沒有寫 super() , compiler 會自動加上 換句話說,會呼叫 default no-arg constructor – 呼叫父類別建構子的敘述必須寫在子類別建構子的第 一行 super. 成員 ;

1-29 this && super Example class Bird { int legs ; public Bird() { } public Bird(int inputleg) { legs = inputleg ; System.out.println("This animal has " + legs + " legs."); } public void eat(int i) { System.out.println("Eating " + i + "Kg " + "food everyday"); } public void move(int i) { System.out.println("Flying speed: " + i + "km/per hour"); } }

1-30 Example class Livestock extends Bird { double life; public Livestock(double i) { super(2); // 必須為第一列, 否則編譯失敗 life = i; System.out.println("This animal only has a " + life + "-year life."); this.eat(5); //this 會參照到本身 class 的 attribute, method, 或 constructor this.move(5); this.move("Flying", 50); super.move(80); //super 會參照到 parent class } public Livestock(){} public void move(int i) //overriding parent class, 繼承時才會出現 { System.out.println("Running speed: " + i + "km/per hour"); } public void move(String s, int i) //method overloading { System.out.println(s + " speed: " + i + "km/per hour"); } } public class test { public static void main(String argv[]) { Livestock chicken = new Livestock(1); } }//test.java

1-31 this && super Example public class Flower { int petalCount = 0; String s = new String("null"); //String=“null”; Flower(int petals) { petalCount = petals; System.out.println("petalCount= "+ petalCount); } Flower(String ss) { System.out.println( "s=" + ss); s = ss; }

1-32 this && super Example Flower(String s, int petals) { this(petals); //this(s); // Can't call two this()! this.s = s; System.out.println("String & int args"); } Flower() { this("hi", 47); System.out.println("default constructor (no args)"); } void print() { //this(11); // Not inside non-constructor! System.out.println("petalCount = " + petalCount + " s = "+ s); } public static void main(String[] args) { Flower x = new Flower(); x.print(); }