UML讲义2-面向对象技术.ppt

上传人:max****ui 文档编号:2016838 上传时间:2019-11-13 格式:PPT 页数:96 大小:2.75MB
返回 下载 相关 举报
UML讲义2-面向对象技术.ppt_第1页
第1页 / 共96页
UML讲义2-面向对象技术.ppt_第2页
第2页 / 共96页
UML讲义2-面向对象技术.ppt_第3页
第3页 / 共96页
点击查看更多>>
资源描述
第2章 面向对象技术,面向对象(Object Oriented,OO),2.1 面向对象程序设计语言,C+ Java C# Delphi(Pascal) VB.NET(VB),Delphi 和C#之父:Anders Hejlsberg,语言大师:安德尔斯,Anders Hejlsberg与Delphi 毕业于丹麦科技大学,曾是Borland公司的创始人之一。在Borland期间,Anders Hejlsberg开发了著名的Turbo Pascal语言,并在其基础上将Turbo Pascal变成一种面向对象、真正拥有可视化编程环境和卓越的数据库库访问特性的应用程序开发语言Delphi。现在Delphi依然是Borland公司的拳头和旗帜性产品,并成为了广大开发人员最喜欢的RAD(快速编程语言)应用开发工具之一。,真正的程序员用C,聪明的程序员用Delphi。,Anders Hejlsberg与Visual Basic 20世纪90年代Anders领导开发的Delphi取得巨大成功,这也对微软的Visual Basic构成了极大的威胁,因此比尔盖茨再次启用微软发家法宝之一的“挖人”招术:用丰厚的薪水、股票认购权和巨额的加盟奖金将Anders挖到了微软。1996年Anders来到微软。,Delphi号称Visual Basic 杀手,Anders Hejlsberg与Visual J+(Java) 1996年Anders来到微软后,直接主抓Visual J+的研发工作。后来由于在Java开发工具授权问题上和Sun公司的纠纷,微软停止了Visual J+的后续开发。,Java语言的优势是跨平台性。,Anders Hejlsberg与C# 微软在Visual J+项目中处于极为被动的局面,就在人们认为微软不可能再有改观的时候,微软另辟蹊径,在anders的主持下,推出了.NET计划和C#语言。,code once ,run anywhere。,2010年3月编程语言排行榜,2009年4月20日,视频:甲骨文74亿美元收购Sun,欧盟无条件批准Oracle公司对Sun收购案的消息,实际上宣告了一个伟大公司的离去。,Java之父James Gosling在自己的博客贴出了一幅画,应该代表了许多技术人的心情。,悼念一个伟大的公司,Java的辉煌还能延续多久,链接:Java之父离开Oracle,Gosling博客全文如下: 是的,那些传言都是真的:我已经在一周前(4月2日)从Oracle辞职。我要对周三参加圣彼得堡TechDays希望听我演讲的所有人道歉。没能出席,我感到非常难受。至于离开的原因,我很难回答:能说的任何准确而且真实的话都弊大于利。最困难的地方,是无法再与这些年来我有幸一起工作的所有人共事了。除了在找工作之前休息一段时间之外,我不知道下一步会做些什么。,小结: C+是目前功能最为强大的语言。 Visual Basic是最容易使用的语言。 Delphi兼具C+功能强大和VB易于使用的特点,最跨平台性不于java,java和.NET打乱了Delphi的发展计划。 Java的突出特点是跨平台性,但功能不如C+。 C#是最年青、面向对象最彻底的语言,结合了C+、java、Delphi等各种语言的优点。,点击打开全文,2.2 面向对象编程,以C# 语言为例,注意:UML是独立于程序语言的。,“如果你有一只猫,你想把它卖给一个编程者,那么,与其强调其可爱与温顺,或如何能捉老鼠,不如直接告诉买家,这只猫是面向对象的。” 关于猫与面向对象的经典名言非常形象的揭示了面向对象在IT界乃至整个学术界的地位。,一、C#概述 1、C#的产生 2000年6月,Microsoft .NET开发平台的发布,标志着近10年来Microsoft公司开发平台一个重大的转变。,C#是一种安全的、稳定的、简单的,由C和C+衍生出来的面向对象的编程语言。它在继承C和C+强大功能的同时去掉了一些它们的复杂特性(例如没有宏和模版,不允许多重继承)。C#综合了VB简单的可视化操作和C+的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。,比尔.盖茨者,美华盛顿州人也,初,就读于哈佛大学,茨平素嬉游无度,不务于正业,每逢试,动辄为C,虽偶有B,未曾见有A者,故老师同学皆讥之。茨乃心中不愤,遂决心使C乃为名动天下之字母,乃辍学。后结识一人,共创今日之C语言,并立公司曰微软。且出Visual Studio系列,中有VB,VC,然未有VA者,盖避其学业之讳也。世人皆用之,然其内幕稀知矣。 时易事移,C已显老迈不可之态,乃创其更新版本,欲名C+。然同创业者,皆曰C+何若C+也,似应名之为此。茨迫于众意,勉强可之。故今日之C+,本应名C+者也,此亦缘何由C径至C+而逾过C+之因也。,C#的故事,时至新世纪,茨欲将C+再升一级,将名之曰C+。时有汉人李开复者,乃献言。复,汉之台湾人也,就业于美之名校卡梅大学,时任微软中国研究院之主任。复曰:“窃为明公不可也。”茨曰:“何哉?”复乃答曰:“C+太显累赘,吾有一字,明公鉴之。”茨曰:“何字?”复曰:“莫若C卅,或C丰最妙。”茨颇不解:“卿何意哉?”复乃详言曰:“夫卅者,三+横排也;夫丰者,三+竖排也。言简而意赅,岂不妙哉?”茨大悦,乃于董事会上宣布之。然一派言C卅优,盖卅横排三+,恰C+之意也。另一派言C丰乃妙,盖竖排三+,乃喻微软之蒸蒸日上也。,二派纠辨甚凶。茨无奈,复就询于开复,乃许之曰:“卿若解此难,吾可以副总裁之位许卿。”复心狂喜,乃表曰:“明公勿急。前有从C径升C+,今何不从C+径升C+,而逾C+乎?吾中华上国,有一井字,乃四+所并而成,何不名下一版本为c#乎?”茨然其言,乃如约升之为微软之副总裁。,Visual Studio .NET 2002 (7.0) Visual Studio .NET 2003 (7.1) Visual Studio 2005(VS2005) (8.0) Visual Studio 2008(VS2008) (9.0),2、C#编程和编译环境,windows 应用程序 ASP.NET网站 控制台应用程序,VS2005,二、C#简明语法 1、数据类型 整型: int 浮点型:float、double 字符型:char 字符串:string 布尔型:bool,class Uninitial public static void Main() int num; num=10; Console.WriteLine(num); ,2、运算符,3、控制台程序的输入与输出 (1)输出:Console.WriteLine() 用于向控制台输出一行信息 (2)输入: Console.ReadLine() 用于从控制台中一次读取一行字符串,直到遇到Enter键才返回读取的字符串。,class Program static void Main(string args) string x; string y; int z; Console.Write(“请输入第一个数:“); x = Console.ReadLine(); Console.Write(“请输入第二个数:“); y = Console.ReadLine(); z = int.Parse(x) + int.Parse(y); Console.WriteLine(“两个数的和为:0“, z); ,4、程序控制语句 (1)if语句,形式2: if (表达式) 语句1 else 语句2,形式1: If (表达式) 语句;,class Add public static void Main() int a,b; string c; Console.Write(“请输入一个数值:“); c= Console.ReadLine(); a=int.Parse(c); b=20; if(a10) Console.WriteLine(“大于”); ,class Compare public static void Main() int a, b, x; Console.Write(“请输入一个数值: “); a=int.Parse(Console.ReadLine(); Console.Write(“请再输入一个数值: “); b=int.Parse(Console.ReadLine(); if (ab) x=a; else x=b; Console.WriteLine(“the max is: 0 “, x); ,(2)while语句 while (条件表达式) 语句,【例】使用while语句,计算1+2+3+100。 class Sum1 public static void Main() int sum=0, i=1; while (i=100) sum=sum+i; i=i+1; Console.WriteLine(“sum=0“, sum); ,三、C#面向对象程序演示 目标:面向对象程序的特点,引出相关的概念,面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。 来源:互联网,面向对象与面向过程的区别,面向过程的程序员认为计算机世界是由一系列功能构成,功能的核心是算法,围绕算法有许多数据,数据从简单到复杂,统称为数据结构,程序就是功能之间通过数据衔接。 面向对象的程序员认为计算机世界是由许许多多的对象组成,每个对象都有属于自己的各种动作,程序就是对象之间通过动作进行交互。,简单地面向对象程序演示(code/exame) 情景假设:1名学生的补考: 1、老师出卷 2、老师安排考试 (1)向教务处向教室和时间 (2)要求学生开始答题 3、老师改卷,class teacher public string name; public teacher(string x) name = x; public void ChuJuan() /出卷 Console.WriteLine(name + “老师出卷“); ,public void AnPaiKaoShi(JiaoWuChu j,student s) j.AnPaiShiJianDiDian(“UML“); s.DaTi(); public void GaiJuan() /改卷 Console.WriteLine(name + “老师改卷“); ,class student public string name; public student(string x) name = x; public void DaTi() /答题 Console.WriteLine(“学生“ + name + “答题“); ,class JiaoWuChu /教务处s public void AnPaiShiJianDiDian(string s) /安排时间地点 Console.WriteLine(s + “的考试地点:西苑10-806;考试时间: 第10周周五上午10:00-12:00“); ,class Program static void Main(string args) teacher t = new teacher(“李维“); JiaoWuChu j = new JiaoWuChu(); student s = new student(“张三“); t.ChuJuan(); /老师出卷 t.AnPaiKaoShi(j,s); /老师安排考试 t.GaiJuan(); /老师改卷 ,小结:面向对象编程的关键步骤 定义类 通过类创建对象 调用对象的操作,访问对象的属性,比较:面向过程编程与面向对象编程,在面向过程编程模式中,围绕功能(步骤)来构造系统。,在面向对象编程模式中,围绕对象来构造系统。,2.3 面向对象的基本原理,面向对象的思想这样认识世界:,客观世界由各种各样的实体组成,这些实体称为对象。 每个对象都有各自的内部状态和运动规律,在外界其他对象或环境的影响下,对象会根据发生的具体事件作出不同的反应,进行对象间的交互。 按照对象的属性和运动规律的相似性,可以将相近的对象划分为一类。 复杂的对象由相对简单的对象通过一定的方式组成。 不同对象的组合及对象间的相互作用和联系构成了各种不同的系统,构成了人们所面对的客观世界。,一、客观世界由各种各样的实体组成,这些实体称为对象,OOP:从问题域中客观存在的事物出发来构造软件系统,用对象用为对这些事物的抽象表示,并以此作为系统的基本构成单位。,面向对象的形象解释(1) 所谓对象,在 Developer 眼里万物皆为对象。比如,我们从早上起床开始: 睁开眼(Object)看见天(Object)亮了,那是因为有光(Object),抬头(Object)望望窗(Object)外,太阳(Object)出来了.,面向对象的形象解释(2) 那么我们是怎么区分这些对象呢?天上有一个太阳一个月亮,我们从小就知道它们是不同的,甚至不需要理由。为什么?因为它们的外观形态、活动规律都有极大的区别。 比如你看见一个对象,它有5吨重,3米高,四条粗腿,一条长鼻子,两只大白牙,即使你从没见过你也应该知道它是什么。 再比如我现在敲这段文字的时候,腿上一阵奇痒,不用看我就知道屋子里至少有一只蚊子而且还是位蚊子小姐,因为我已经知道在这种情况下只有母蚊子才具有“叮”这种行为。,二、每个对象都有各自的内部状态和运动规律,在外界其他对象或环境的影响下,对象会根据发生的具体事件作出不同的反应,进行对象间的交互。,面向对象的形象解释(3) 新的问题又来了。比如我们这个小区有不少养宠物的,每天傍晚狗跳猫蹿的煞是热闹。虽然每只狗都有不同,每只猫也都相异,但看上去狗都是,狗猫都是猫。原因是它们主要的状态和行为虽然都完全相同,这就有了类(Class)。类的状态称为属性(Property),而行为就是方法(Method)了。,三、按照对象的属性和运动规律的相似性,可以将相近的对象划分为一类,MP3,计算机,类是这些对象的抽象描述,每个对象是类的一个实例。,四、复杂的对象由相对简单的对象通过一定的方式组成,对象具有可分解性和组合性。,面向对象方法的胜利,五、不同对象的组合及对象间的相互作用和联系构成了各种不同的系统,构成了人们所面对的客观世界。,2.4 面向对象的基本概念,面向对象是一种运用对象、类、继承、封装、多态、消息等概念来构造系统的软件开发方法。,面向对象=对象+类+封装+继承+多态,一、对象与类 对象:客观世界中的实体,对象由一组属性和操作组成。 类:具有相同属性和行为的对象集合。,抽象为,MP3对象:,class student public string name; public student(string x) name = x; public void DaTi() /答题 Console.WriteLine(“学生“ + name + “答题“); ,创建学生对象 student s1 = new student(“张三“); student s2 = new student(“李四“);,类:student 对象:s1、s2,思考题: 一个类可以创建多个对象,这些对象之间的区间体现在 (A)属性的类型不同 (B)属性的个数不同 (C)操作的个数不同 (D)属性值不同,二、对象的特性:封装 封装是把对象的属性和操作结合成一个独立的系统单位,并尽可能地隐藏对象的内部细节。 封装有两重含义: 1、把相关的数据(属性)和操作结合在一起,组成一个一个不可再分的独立单元,即对象。 2、封装允许有选择地隐藏对象中的属性和操作(通过可见性来实现)。,class student public string name; public student(string x) name = x; public void DaTi() /答题 Console.WriteLine(“学生“ + name + “答题“); ,三、类的特性:继承(派生、泛化),子类拥有父类的全部属性和操作。定义子类时不必重复定义那些已经在父类中定义过的属性和操作,在此基础上还可以添加自己的属性和操作。,A B K(),C W(),如果A继承于B,则:,单重继承,多重继承,只有C+还支持多重继承,其他语言(C#、java)等都已经取消了多重继承。,程序演示:code/graduate,class student public int number; public string name; public string myclass; class graduate:student public string research; public string teacher; ,class Program static void Main(string args) graduate g1 = new graduate(); g1.number = 1000; g1.name = “张三“; g1.myclass = “管理科学与工程062“; g1.research = “管理系统工程“; g1.teacher = “汪应洛“; Console.WriteLine(“姓名:“+g1.name); Console.WriteLine(“导师:“+g1.teacher); ,程序演示:code/graduate,四、对象之间的联系纽带消息 对象之间通过传递消息来相互作用,消息在代码中体现为 函数(操作)的调用。,消息包含三个方面的内容: 消息的接收者 接收对象应采用的方法 方法所需要的参数(可以为空),消息: class teacher public void AnPaiKaoShi() /安排考试 j.AnPaiShiJianDiDian(“UML“); s.DaTi(); ,五、类的特性:多态 多态性:同名的操作被不同的对象接收时,可产生不同的动作或执行效果。 多态性允许在多个类(尤其是有继承关系)中定义同名的操作,并在每一个类中有不同的实现。,在C语言中,不能有同名的函数,老大要收高利贷,对三个小弟说,给我去跟某某某收高利贷。三个小弟A,B,C听到了之后采取不同的行动 A:打电话过去威胁说不换就XXX(恐吓) B: 直接带家伙杀到他家楼下等(威逼) C:直接面谈,说还1万返回1百,下次再借,利率打折(利诱),程序演示:简单的多态程序(code/animal),class dog public string name; public int legs; public dog(string x,int y) name = x; legs = y; public void sound() Console.WriteLine(name+“的叫声为:“+“汪汪“); ,class cat public string name; public int legs; public cat(string x, int y) name = x; legs = y; public void sound() Console.WriteLine(name + “的叫声为:“ + “喵喵“); ,class chick public string name; public int legs; public chick(string x, int y) name = x; legs = y; public void sound() Console.WriteLine(name + “的叫声为:“ + “咯咯达“); ,class Program static void Main(string args) dog dog1 = new dog(“小狗“,4); cat cat1 = new cat(“小猫“,4); chick chick1 = new chick(“小鸡“,2); dog1.sound(); cat1.sound(); chick1.sound(); ,总结:面向对象编程的基本思路 定义类 通过类创建对象 对象之间相互发送消息,总结:面向对象方法是一种运用对象、类、继承、封装、多态、消息等概念来构造系统的软件开发方法。,The End,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!