Ch09 物件導向技術導論(二) Java程式設計(2).

Slides:



Advertisements
Similar presentations
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Advertisements

单元二:面向对象程序设计 任务二:借书卡程序设计.
第四章 类、对象和接口.
第三讲 面向对象(上).
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
JAVA 编 程 技 术 主编 贾振华 2010年1月.
第一單元 建立java 程式.
项目6 通用堆栈.
大葉大學 指導教授: 黃鈴玲 學生: 林慶南(工業工程與科技管理所)
四資二甲 第三週作業 物件導向程式設計.
Ch03 物件導向程式設計_物件與類別 JAVA 程式設計入門(II).
第二章 JAVA语言基础.
Ch07 介面與多重繼承 物件導向程式設計(II).
第三章 控制结构.
Ch08 巢狀類別 物件導向程式設計(II).
程式設計實作.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
Ch03 類別與物件 物件導向系統分析與設計.
Java簡介.
Ch05 繼承 Java程式設計入門(2).
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
Ch02 類別、物件及屬性 物件導向程式設計(II).
Ch10 類別與物件-方法 Java程式設計(2).
程式設計實作.
類別(class) 類別class與物件object.
Java程序设计 第9章 继承和多态.
程式設計(二) 進階類別 郭文真 Sabrina Kuo.
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
Java 程式設計 講師:FrankLin.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
第一單元 建立java 程式.
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
JAVA 编 程 技 术 主编 贾振华 2010年1月.
第 19 章 XML記憶體執行模式.
第三课 标识符、关键字、数据类型.
物件導向系統分析與設計 CH04 物件導向開發方法.
C++复习2----类与对象.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
樣版.
第三章 数据抽象.
第二章 Java语法基础.
第二章 Java基本语法 讲师:复凡.
OOP9 類別Class.
陣列與結構.
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
龍老師我不會Debug QQ.
第二章 Java基本语法 讲师:复凡.
Chinese II Lesson 14 Birthday & Celebrations
簡單Java介紹.
Quiz1 繳交期限: 9/28(四).
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
JAVA 程式設計與資料結構 第三章 物件的設計.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
開發Java程式語言的工具 JDK.
判斷(選擇性敘述) if if else else if 條件運算子.
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
第6章 继承和多态 伍孝金
Summary
方法(Method) 函數.
InputStreamReader Console Scanner
Presentation transcript:

Ch09 物件導向技術導論(二) Java程式設計(2)

類別的定義-類別的定義語法 修飾字 class 類別名稱 //類別的標頭 { // 屬性宣告 // 建構子定義 // 方法定義 }

類別的定義-類別的修飾字 public-公開類別,宣告成此種類別可以被任何類別所使用。 無修飾字(default)類別,此種類別僅能被同一套件(package)內的類別使用。 final-此種類別不可被繼承。 abstract-此為抽象類別的修飾字。此種類別至少擁有一個抽象方法,不可用於直接建立物件

類別的定義-類別的命名規則 類別名稱的第一個字母應該大寫,如:Car、Person。 若是由兩個字以上組成時,每個單字的第一個字母為大寫,如:CarClass。 名稱中包括縮寫時,所有縮寫字母為大寫,如:URL。 class EmptyClass { }

建立物件 宣告物件 建立物件實體 宣告並建立物件實體 類別名稱 物件名稱; 物件名稱 = new 類別名稱(); 類別名稱() 為建構子呼叫 類別名稱 物件名稱; 建立物件實體 物件名稱 = new 類別名稱(); 類別名稱() 為建構子呼叫 宣告並建立物件實體 類別名稱 物件名稱 = new 類別名稱();

物件名稱 物件名稱必須是合法的識別字。 其命名規則為第一個字的字母皆為小寫。 若為複合字時,其餘字的第一個字母為大寫 若為縮寫字母時,皆為小寫。

範例1: 宣告及初始化物件 class Ch02_01 { public static void main(String [] args) EmptyClass emptyClass = new EmptyClass(); Ch02_01 ch02_01 = new Ch02_01(); System.out.println(emptyClass); System.out.println(ch02_01); } class EmptyClass 輸出結果 有幾個class在你的目錄下? 在一個程式檔中有兩個class?? Ch02/Ch02_01.java

屬性(1) 屬性的宣告語法 存取權限相關的修飾字 public-公用級,所有類別皆可使用此級屬性。 修飾字 資料型態 屬性名稱; 存取權限相關的修飾字 public-公用級,所有類別皆可使用此級屬性。 protected-保護級,同一套件內及其子類別可以直接使用。 無修飾字-預設級(default)或稱套件級,同一套件內的類別可以直接使用。 private-私有級,屬性所在的類別才能使用。

屬性(2) 使用final修飾字自訂常數 static修飾者為類別屬性 使用點(dot)運算子指出取用的屬性 public final int wheels = 4; static修飾者為類別屬性 類別屬性是同一類別中所有物件所共有,不屬某個物件 使用點(dot)運算子指出取用的屬性 屬性只要宣告就會自動初始化,設上預設值

範例2-系統需求 建立一個日期系統,每一個日期的值包含有年、月、日。顯示昨天、今天、明天的資料

範例2-系統分析 Date Day:int Month:int Year: int today:Date yesterday:Date tomorrow:Date

範例2-程式設計 為什麼明天的日期是0-0-0 class Ch02_02 { public static void main(String [] args) Date today = new Date(); Date yesterday = new Date(); Date tomorrow = new Date(); today.day=14; today.month=3; today.year=2007; yesterday.day=13; yesterday.month=3; yesterday.year=2007; System.out.println("今天的日期是: " + today.year + "-" + today.month + "-" + today.day); System.out.println("昨天的日期是: " + yesterday.year + "-" + yesterday.month + "-" + yesterday.day); System.out.println("明天的日期是: " + tomorrow.year + "-" + tomorrow.month + "-" + tomorrow.day); } class Date int day; int month; int year; 為什麼明天的日期是0-0-0

活化腦、手運動(1) 修正範例2的程式Ch02_02.java,使得 “明天”的日期是正確的

活化腦、手運動(2) 考慮一下,下列情況: 在範例2的程式碼中,有兩個class ,是不是要在同一個檔案中??? 測試: 建立一個新的資料夾Ch02_02(為了避免與範例2中,已經建立的類別相干擾) 將class Ch02_02程式碼存到Ch02_02資料夾下,此程式檔案的名稱是Ch02_02.java 將class Date程式碼存到Ch02_02資料夾下,程式檔案的名稱是Ch02_02_01.java 先編譯Ch02_02_01.java (javac Ch02_02_01.java) 再編譯Ch02_02.java (javac Ch02_02.java) 再執行Ch02_02.java (java Ch02_02) 為什麼456的順序不可以改變??? Ch02_02/Ch02_02_01.java ; Ch02_02/Ch02_02.java

範例3: 什麼是private class Ch02_03 { public static void main(String [] args) Date3 today = new Date3(); Date3 yesterday = new Date3(); Date3 tomorrow = new Date3(); today.day=14; today.month=3; today.year=2007; yesterday.day=13; yesterday.month=3; yesterday.year=2007; System.out.println("今天的日期是: " + today.year + "-" + today.month + "-" + today.day); System.out.println("昨天的日期是: " + yesterday.year + "-" + yesterday.month + "-" + yesterday.day); System.out.println("明天的日期是: " + tomorrow.year + "-" + tomorrow.month + "-" + tomorrow.day); } class Date3 private int day; private int month; private int year; Ch02/Ch02_03.java

範例4:什麼是static class Ch02_04 { public static void main(String [] args) Date4 today = new Date4(); Date4 yesterday = new Date4(); Date4 tomorrow = new Date4(); today.day=14; today.month=3; today.year=2007; yesterday.day=13; yesterday.month=3; yesterday.year=2007; System.out.println("今天的日期是: " + today.year + "-" + today.month + "-" + today.day); System.out.println("昨天的日期是: " + yesterday.year + "-" + yesterday.month + "-" + yesterday.day); System.out.println("明天的日期是: " + tomorrow.year + "-" + tomorrow.month + "-" + tomorrow.day); } class Date4 static int day; static int month; static int year;

範例5:物件屬性與類別屬性的差別 class Ch02_05 { int i = 0; static int s = 100; public static void main(String [] args) Ch02_05 obj1 = new Ch02_05(); Ch02_05 obj2 = new Ch02_05(); obj1.i++; obj1.s++; obj2.i++; obj2.s++; System.out.println("obj1.i = " + obj1.i); System.out.println("obj1.s = " + obj1.s); System.out.println("obj2.i = " + obj2.i); System.out.println("obj2.s = " + obj2.s); //System.out.println("Ch02_05.i = " + i); System.out.println("Ch02_05.s = " + s); }

類別成員和物件成員的區別

範例6:指向同類別的參照變數 class Ch02_06 { int i = 0; static int s = 100; public static void main(String [] args) Ch02_06 obj1 = new Ch02_06(); Ch02_06 obj2 = obj1; obj1.i++; obj1.s++; obj2.i++; obj2.s++; System.out.println("obj1.i = " + obj1.i); System.out.println("obj1.s = " + obj1.s); System.out.println("obj2.i = " + obj2.i); System.out.println("obj2.s = " + obj2.s); //System.out.println("Ch02_06.i = " + i); System.out.println("Ch02_06.s = " + s); }

活化腦、手運動(3) 承手腦運動(1),建立一個新的物件birthday,指向today

大富翁 class 玩家 class 大富翁 { String 名字; int 錢; int 位置; } class 土地 { String 地名; int 售價; class 大富翁 { public static void main(String [] args) { 玩家 a = new 玩家(); a.名字="灰太狼"; a.錢=1; System.out.println(a.名字+" 有 " +a.錢 + "元"); }