王豐緒 銘傳大學資訊工程學系 問題:判斷是否為長方形.

Slides:



Advertisements
Similar presentations
软饮料概述 人文艺术系 石惠舟. 什么是饮料? 饮料概述 饮料是指以水为基本原料,由 不同的配方和制造工艺生产出 来,供人们直接饮用的液体食 品。 饮料 饮料除提供水分外,由于在不 同品种的饮料中含有不等量的 糖、酸、乳以及各种氨基酸、 维生素、无机盐等营养成分, 因此有一定的营养。
Advertisements

第五单元 酒水知识与酒吧服务 主题三 蒸 馏 酒 —— 中国蒸馏酒. 蒸馏酒是把经过发酵的酿酒原料,经过一次或多次的蒸馏过 程提取的高酒度酒液。
2013 年 413 重庆市考真题解析 主讲人 贾振杰. 主要内容 总体考试特点 分块对比 真题讲解.
第四章 类、对象和接口.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
JAVA 编 程 技 术 主编 贾振华 2010年1月.
首页 全国高等学校招生考试统一考试 监考员培训 广州市招生考试委员会办公室.
欢迎您来到 心理课堂! 一首歌 1.
XX啤酒营销及广告策略.
人口增长.
第四章:长期股权投资 长期股权投资效果 1、控制:50%以上 有权决定对方财务和经营.
项目6 通用堆栈.
天津1班面试专项练习1 综合分析现象类 主讲:凌宇 时间:5月21日 19:00—22:00.
鬼太郎 身為幽靈族後裔一員的鬼太郎,他出生的時候,父母便雙亡,不過他的爸爸化身為眼珠,陪伴著他。而鬼太郎與他的同伴貓女、臭鼠人等,為了維持妖怪與人類間的和平,他們將一一消滅邪惡的妖怪,守護這世界的和平。
45天备考指南 2013年下半年国考资格证笔试系列讲座(2) 华图教师事业部 石杨平.
第六章 小地区控制测量 6-1概述 一、 控制测量的意义和方法 (一) 控制测量的意义
C语言程序设计 李伟光.
第一章 会计法律制度 补充要点.
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
二、个性教育.
2014政法干警备考平台 2014政法干警考试群⑨ 中公教育政法干警考试 ——微博 中公教育政法干警考试
实现人生的华丽转身 —2014年高速公路考试备考指导 中公教育陈修晓.
初中语文总复习 说明文 阅读专题 西安市第六十七中学 潘敏.
Hello小程序的运行和编译 Java AppletJava小程序的构成 1、关键字
面向对象的程序设计(一).
跳楼价 亏本大甩卖 清仓处理 买一送一 5折酬宾. 跳楼价 亏本大甩卖 清仓处理 买一送一 5折酬宾.
资料分析 如何攻破最后瓶颈 主讲老师:姚 剑 4月6日20:00 YY频道:
清仓处理 跳楼价 满200返160 5折酬宾.
第一章 面向对象程序设计.
1.1.2 四 种 命 题.
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
面向海洋的开放地区——珠江三角洲 山东省高青县实验中学:郑宝田.
講師:聯捷聯合會計師事務所 張志勝會計師(所長)
恩典更新 羅15:1-13.
09学前教育班 魏文珍 自我介绍.
第二章 JAVA语言基础.
存货的核算 一、项目任务 1、原材料核算 ——按实际成本核算 ——按计划成本核算 2、低值易耗品及包装物核算 3、存货清查的核算
北师大版七年级数学 5.5 应用一元一次方程 ——“希望工程”义演 枣庄市第三十四中学 曹馨.
Ch07 介面與多重繼承 物件導向程式設計(II).
成员名单 陈丽 陈敏 杨娇 高丽莉 李亚金 吴沅娟 任津沙 张舒蓉.
海洋存亡 匹夫有责 ——让我们都来做环保小卫士 XX小学三(3)班.
Ch08 巢狀類別 物件導向程式設計(II).
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
Classes Lecturer: 曾學文.
CHAPTER 9 建構方法 ROBERT.
程式設計實作.
2018/12/3 面向对象与多线程综合实验-网络编程 教师:段鹏飞.
Java程序设计 第9章 继承和多态.
王豐緒 銘傳大學資訊工程學系 問題:JAVA 物件檔輸出入.
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
C/C++/Java 哪些值不是头等程序对象
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第七章  事业单位支出的核算      §第一节  支出概述     §第二节  拨出款项     §第三节  各项支出     §第四节  成本费用.
单元17 钢 结 构 学习目标 (1)了解钢结构的特点。 (2)了解钢结构的发展现状。 (3)掌握钢结构的链接方式。
第二章 Java语法基础.
山清水秀的林芝 yy 曾元一
辅导课程十一.
第二章 Java基本语法 讲师:复凡.
汽车电器与控制设备 第0章 绪论.
数学题解答 第二章 一元一次方程 2.1从算式到方程 (第1课时) 数学题解答
硬幣遊戲解題詳解 王豐緒 銘傳大學資訊工程學系.
辅导课程十二.
方格紙上畫正方形.
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
第二章 Java基础语法 北京传智播客教育
利用十字交乘法將二次多項式化為兩個一次式的乘積。
Summary
Presentation transcript:

王豐緒 銘傳大學資訊工程學系 問題:判斷是否為長方形

問題基本資訊 標題 問題描述 目的 版本:2011/07/27 提示 檢查是否為長方形 給平面上四個點A、B 、C 、D的座標,請問這四個點所形成的四邊形ABCD是否是一個長方形? 目的 讓同學練習物件導向式的思考:如何掌握領域知識(平面向量知識),並轉換成物件模型與JAVA Code 版本:2011/07/27 提示 請以UML圖型繪製本問題的物件模型 以JAVA實作程式

問題分析:掌握領域知識 給平面上四個點A、B 、C 、D的座標,請問這四個點所形成的四邊形是否是一個長方形? 學習單1:請同學整理相關領域知識 A B C D A B C ? A B C D 向量? 內積?

物件模型 學習單2:請同學根據問題描述,尋找適當的物件模型 給平面上四個點A、B 、C 、D的座標,請問這四個點所形成的四邊形是否是一個長方形? 名詞 點:Vertex 座標:新類別或者是Vertex的成員 四邊形:四個點所形成 長方形:一種特殊的四邊形 邊:兩點決定一個邊 向量:用來計算角度

使用 繼承 使用 使用 使用 具有 具有 繼承

Vector類別 資料成員 功能成員 X 座標 Y座標 isZero():檢查是否為零向量 crossProduct(Vector v2):與另一向量v2的內積 建構元:Vector(x, y)

Vertex類別 資料成員 功能成員 繼承向量類別(因為點也可視為一個向量) setPosition(xx, yy):更改點的座標為(xx, yy) 建構元:Vertex(x, y)

Side類別 資料成員 功能成員 Vertex v1 : 邊的第 1 點 Vertex v2 : 邊的第 2 點 mutual_Perpendicular(Side s2):判斷與另一邊s2是否是直角 cvt2Vector():將邊轉成向量 建構元:Side(vtx1, vtx2)

Quadrangle類別 資料成員 功能成員 Vertex v1 : 四邊形的第 1 點 Vertex v2 : 四邊形的第 2 點 isRectangle():判斷是否是長方形 建構元:Quadrangle(vtx1 , vtx2 , vtx3, vtx4)

學習單3: JAVA Code

學習任務 請利用BlueJ撰寫本問題的JAVA Code,並且進行測試

Vector類別 public class Vector { protected float x; //x 向量 protected float y; //y 向量 private float epth = 0.00000000001f;  public Vector() x = 0; y = 0; } public Vector(float xx, float yy) x = xx; y = yy; public boolean isZero() return ((Math.abs(x) < epth) && (Math.abs(y) < epth) ) ; public float crossProduct(Vector v2) return x*v2.x + y*v2.y ;

Vertex類別 public class Vertex extends Vector { public Vertex(float xx, float yy) // initialise instance variables x = xx; y = yy; } public void setPosition(float xx, float yy) // put your code here

Side類別 public class Side { private Vertex v1; private Vertex v2; private float epth=0.00000001f; public Side(Vertex vv1, Vertex vv2) v1 = vv1; v2 = vv2; } public boolean mutual_Perpendicular(Side s2) Vector vec1 = this.cvt2Vector(); Vector vec2 = s2.cvt2Vector(); return !vec1.isZero() && !vec2.isZero() && Math.abs(vec1.crossProduct(vec2)) < epth; public Vector cvt2Vector() Vector vec = new Vector(v2.x - v1.x, v2.y - v1.y); return vec;

Quadrangle類別 public class Quadrangle { private Vertex v1; private Vertex v2; private Vertex v3; private Vertex v4; public Quadrangle() v1 = new Vertex(0,0); v2 = new Vertex(0,0); v3 = new Vertex(0,0); v4 = new Vertex(0,0);; } public Quadrangle(Vertex vv1,Vertex vv2,Vertex vv3,Vertex vv4) v1 = vv1; v2 = vv2; v3 = vv3; v4 = vv4; public boolean isRectangle() Side s1 = new Side(v1,v2); Side s2 = new Side(v2,v3); Side s3 = new Side(v3,v4); Side s4 = new Side(v4,v1); return s1.mutual_Perpendicular(s2) && s2.mutual_Perpendicular(s3) && s3.mutual_Perpendicular(s4) && s4.mutual_Perpendicular(s1) ;

反思(1/3) 學習單4:請同學進行學習反思,你從此問題學到什麼? 本次練習,你覺得物件之間具有哪些關係? 繼承 使用 具有 本次練習,你覺得物件模型的建立有哪些策略? 從名詞找類別 根據領域知識定義類別與資料成員 根據領域知識定義類別之間的關係

反思(2/3) 請同學進行學習反思,你從此問題學到什麼? 本次練習,你覺得JAVA有哪些特性可以支援物件導向程式設計? 繼承可以實作繼承的物件關係 資料成員的”保護”存取性(protected)允許資料成員在繼承物件中的使用 物件式成員,可以實現”具有”的物件關係 建構元用以產生物件 以物件作為參數,可以實現”使用”的物件關係

反思(3/3) 請同學進行學習反思,你從此問題學到什麼? 本次練習,你覺得物件導向程式有哪些不錯的測試策略與技巧? 善用BlueJ的圖型化測試介面 本次練習,你覺得物件導向設計具有哪些優點?(以本問題為例,舉例具體說明) 更清晰的問題模式與自然的計算邏輯 重複使用度高,降低程式複雜度 容易測試與維護

延伸學習 請同學列舉其它與本問題相關的學習 請同學就本次學習的結果,設計測驗題目 座標應該作為一個獨立的類別,還是類別的屬性? JAVA指令 this 在本問題的應用? JAVA 預設建構元的特性為何? 請同學就本次學習的結果,設計測驗題目

座標應該作為一個獨立的類別,還是類別的屬性? 以本問題的需求而言,設計成類別屬性即可 但是,若要考慮問題的通則化,例如,在3D的情況下,去考慮類似的問題,則最好作為獨立的類別

JAVA指令 this 在本問題的應用? public class Vector { protected float x; //x 向量 protected float y; //y 向量 public Vector(float xx, float yy) x = xx; y = yy; } public Vector(float x, float y) { this.x = x; this.y = y; }

JAVA 預設建構元的特性為何? 預設性建構元(無參數者)的系統行為 當類別沒有定義建構元時,系統的預設行為會被啟動 使用不作任何事的預設建構元 當類別有定義建構元時,系統的預設行為會被取消 此時,若沒有定義預設建構元,類別就沒有預設建構元 若繼承類別中,有定義建構元,則被繼承類別一定要能找到預設建構元(不論是自訂或者預設) 因為預設建構元的第一行會呼叫super(),也就是執行父類別的預設建構元