Java 2012.12.14.

Slides:



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

面向对象与设计模式 RD 常见编程范式介绍  并行编程 - Process-orientedProcess-oriented  组件编程 - Component-basedComponent-based  事件驱动 - Service-oriented,Time-drivenService-orientedTime-driven.
面向对象程序设计 、. 第二章 面向对象的分析与设计 学习目标 1 确定系统中的对象 2 确定对象的属性及操作 3 测试对象的有效性 4 区分对象和类 5 了解面向对象的编程和过程化编程之间的区别 6 了解封装的主要好处 7 了解软件开发的主要步骤.
系統分析與設計 楊子青 H-1 H 、物件導向技術 n 物件導向的基本概念 – 物件、類別 – 封裝、繼承 – 同名異式 ( 多型 ) 、超荷 ( 過載 ) n 物件導向分析與設計及塑模工具 n UML 塑模工具.
第3-2章 类与 对象 Java类的特性 教学内容: 类的私有成员与公共成员 方法的重载 构造方法 实例成员与静态成员 重点: 重载 难点:
第四章 类、对象和接口.
第三讲 面向对象(上).
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
JAVA 编 程 技 术 主编 贾振华 2010年1月.
第 9 章 物件的建構.
6. 6 Overloading methods and constructors 6
项目6 通用堆栈.
第一章 資料結構導論 1-1 資料結構簡介 1-2 認識程式設計 1-3 演算法效能分析 1-4 物件導向程式設計與Java.
Java程序设计教程 第一讲 Java概述.
四資二甲 第三週作業 物件導向程式設計.
面向对象的程序设计(一).
面向对象程序设计(Java) 徐志红
第一章 面向对象程序设计.
類別與物件 Class & Object.
Ch07 介面與多重繼承 物件導向程式設計(II).
軟體工程 -物件導向程式設計與UML系統分析實作
JAVA程序设计 (03) JAVA Programming
第三章 控制结构.
第5章 Java中类、对象、接口 及包的概念 5.1 类的基本概念 5.2 类的继承概念 5.3 抽象类和接口 5.4 包.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
程式設計實作.
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
H、物件導向技術 物件導向的基本概念 物件、類別 封裝、繼承 同名異式(多型) 、超荷(過載) 物件導向分析與設計及塑模工具 UML塑模工具.
物件導向程式設計 (Object-Oriented rogramming)
Classes Lecturer: 曾學文.
CHAPTER 9 建構方法 ROBERT.
第六章 类的扩展与继承.
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
Java 程式設計 講師:FrankLin.
程式設計實作.
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
面向对象程序设计 、.
第9章 類別圖與物件圖 9-1 類別圖與物件圖的基礎 9-2 類別圖的符號 9-3 類別關係 9-4 物件圖 9-5 繪製類別圖與物件圖
Java程序设计 第9章 继承和多态.
SPOTO TM JAVA课程 JAVA中的OO语法
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
2019/1/16 Java语言程序设计-类与对象 教师:段鹏飞.
异常及处理.
第5讲 使用类和对象编程(三) 内部类 实例 程序控制结构 选择语句.
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
第16章 虛擬與多形 16-1 虛擬函數 16-2 純虛擬函數與抽象類別 16-3 多形 16-4 虛擬繼承與虛擬解構子.
辅导课程八.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
《JAVA程序设计》 语音答疑 辅导老师:高旻.
第二章Java基本程序设计.
第二章 Java基本语法 讲师:复凡.
陳維魁 博士 儒林圖書公司 第三章 變數與繫結 陳維魁 博士 儒林圖書公司.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第二章 Java基本语法 讲师:复凡.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
第一讲 面向对象方法学与信息系统建模.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
JAVA 程式設計與資料結構 第三章 物件的設計.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
面向对象程序设计 C++教程 西安工业大学 于帆.
判斷(選擇性敘述) if if else else if 條件運算子.
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
第6章 继承和多态 伍孝金
Summary
Presentation transcript:

Java 2012.12.14

Outline 為什麼要物件導向? 物件導向的好處 Object-Oriented Programming 類別的宣告&物件的實作 Constructors

為什麼要物件導向? 物件導向是近年來發展出的一套程式設計的開發 概念,基於程式撰寫越來越龐大,參與的開發人 員更多,程序式的結構(procedure-oriented)缺 乏效率和可讀性,而且無法有效發展GUI軟體, 因此發展出的一套具物件概念的語言結構。 例:C++,JAVA

物件導向的好處: 1. 抽象化 ( Abstraction ) 思考物件的思維,      用抽象化的思維來思考複雜的程式,      注重物件與外界溝通的行為,      可達到資料隱藏的目的。  2.   封裝 ( Encapsulation ) 將資料包裝在類別內部,      限定特定的函數存取,      使別人無法得知物件內的運作情形。 3.   繼承 ( inheritance ) 將繼有類別的功能, 透過繼承的方式, 將此功能繼承給新的類別使用。 4.   多型 ( polymorphism ) 允許相同名稱的函數針對引數的不同而有不同的處理動作。 5.   動態繫結 ( Dynamic binding ) 將物件的方法函式位址建立成一個虛擬表格(Virtual Table), 在執行階段時,判斷該呼叫哪一個物件的方法函式,      以達到物件多型(polymorphism)的目的。

Object-Oriented Programming (OO 、OOP 物件導向程式語言) Java 比擬為一部電影,要有: 導演: 想劇情 編劇: 安排劇中角色、道具、場景的人 演員: 舞台上照著劇本實際演出的人

西遊記 導演: 你 角色: 猴子、豬、雲 演員: 孫悟空、小猴子A、小猴子B、豬八戒、雲A 、雲B 名稱 孫悟空 小猴子A 小猴子B 雲A 表情 位置 表情 位置 表情 位置 顏色 位置 顏色 位置 表情 位置 屬性 七十二變 搥背 搥背 飄動 飄動 吃東西 行為

我會飄動 我會飄 雲A 我會七十二變 雲B 我會吃東西 我會搥背 我會搥背 孫悟空 小猴子B 小猴子A 豬八戒

類別的宣告&物件的實作 物件的實作 類別的宣告: 猴子 小猴子A = new 猴子(); class 猴子 小猴子A.表情 = 大笑; { 位置 public 搥背() 幫別人搥背; }

“猴子、豬、雲 “ 是類別(class) “孫悟空、小猴子A、小猴子B、豬八戒、雲A 、雲B” 是由類別實做出來的物件(object) “狀態、位置” 是類別的屬性(state、properties 、attribute) “七十二變、搥背、飄動、吃東西” 是類別的行為(behavior 、actions)

Constructors Constructors play the role of initializing objects. class Test{ int x,y; } public class NoConstructor{ public static void main(String[] argv){ Test a=new Test(); class Test{ int x,y; Test(){ } public class DefaultConstructor{ public static void main(String[] argv){ Test a=new Test();

CONSTRUCTORS 自行定義Constructors A constructor must have the same name as the class itself. Constructors do not have the return type, not even void.

Constructors 建立無參數的 Constructors class Test{ int x,y; Test(){ x=10; } public class NoArgument{ public static void main(String[] argv){ Test a=new Test(); System.out.println("x= "+a.x); System.out.println("y= "+a.y);

Constructors 建立有參數的Constructors class Test{ int x,y; Test(int initX,int initY){ x=initX; y=initY; } public class WithArgument{ public static void main(String[] argv){ Test a=new Test(30,40); System.out.println("x= "+a.x); System.out.println("y= "+a.y);

Constructors-OVERLOADING class Test{ int x=10,y=20; Test(){ } Test(int initX,int initY){ x=initX; y=initY; Test(int initX){ void show{ System.out.println("x= "+x); System.out.println("y= "+y); public class Overloading{ public static void main(String[] argv){ Test a=new Test(30,50); Test a=new Test(30); Test a=new Test();

 TV.java + TestTV.java (課本p.327-328) 參考程式:  TV.java + TestTV.java (課本p.327-328) public class TestTV { public static void main(String[] args) { TV tv1 = new TV(); tv1.turnOn(); tv1.setChannel(30); tv1.setVolume(3); TV tv2 = new TV(); tv2.turnOn(); tv2.channelUp(); tv2.volumeUp(); System.out.println(“tv1‘s channel is ”+ tv1.channel+“ and volume level is ” + tv1.volumeLevel); System.out.println("tv2'2 channel is " + tv2.channel +" and volume level is " + tv2.volumeLevel); }

public class TV { int channel =1; int volumeLevel=1; boolean on = false; public TV(){ } public void turnOn(){ on=true; public void turnOff(){ on=false; public void setChannel(int newChannel){ if(on && newChannel >= 1 && newChannel <=120){ channel = newChannel; public void setVolume(int newVolumeLevel){ if(on && newVolumeLevel >= 1 && newVolumeLevel <=120){ volumeLevel = newVolumeLevel; public void channelUp(){ if(on && channel <120){ channel++; public void channelDown(){ if(on && channel >1){ channel--; public void volumeUp(){ if(on && volumeLevel <7){ volumeLevel++; public void volumeDown(){ if(on && volumeLevel >1){ volumeLevel--;

參考程式:  Car.java + TestTV.java /* Declaration Class */ import javax.swing.*; public class TestCar { public static void main(String[] args) Car car1 = new Car(); car1.speed = 120; car1.position = "Kaohsiung"; car1.drive(); car1.printID(); //呼叫static method Car car2 = new Car(); car2.carID = 200; //修改static variable //Car.printID(); }

public class Car { int speed = 0; String position = "Taipei"; static int carID = 100; Car(){ } void drive() //代表drive行為的method { System.out.println("The car is driving in " + position + " with " + speed + "km/hr"); void stop() //代表stop行為的method System.out.println("The car is stopping in " + position + " with 0km/hr"); int OilConsume(int oil) //計算油耗 return oil*10; static void printID() //static method System.out.println("Car ID is : " + carID);

practice 撰寫一個程式,其中包含一個類別Dates,並在建構方法中初 始化一個含有7個元素的字串陣列,各個元素對應到星期一 到星期天的英文縮寫,並提供一個方法askDate(),傳入1-7的 數字,傳回對應的英文縮寫 寫一個類別circle,代表一個圓,並提供多種建構方法可以透 過指定圓心座標及半徑或是一個包含此圓的最小正方形來建 立circle物件,同時定義方法可以計算圓周及圓面積

Ppt下載: http://oss.csie.fju.edu.tw/~jastine01/ppt.html