2.1 面向对象 Java完全支持面相对象的三个基本特征:继承、封装、多态 程序的三中基本结构 一、顺序结构 由a入口到b出口的执行过程,按照顺序执行 注:Java方法类似结构化程序设计的函数,因此方法中的代码执行也是顺序结构 个人参考:普通方法和代码块 二、选择结构 选择结构是有选择性的执行结构,执行符合自己要求的函数,单分支判断的话,如果条件为false则什么都不执行,直接从a入口到b出口,如果为多分支则会进行判断,满足条件的函数将得到执行 个人参考:if语句和if…else语句,switch语句等 三、循环结构 当型结构:当条件为真(true)时,执行循环体,并且进行再次判断,循环直到条件为假(false)时,退出循环和停止判断,到达流程出口处,先判断再执行 个人参考:for语句,while语句 直到型循环: 从入口处直接执行循环体然后再判断是否满足条件,先执行再判断,直到条件为假时才结束循个人参考:do…while语句 如果一个循环体没有了可以作为参考的判断条件且在循环体里没有结束循环的标志则将成为死循环,通常没有任何意义的死循环体 面向对象程序设计简介: 面向对象的思想概念:将现实生活中客观存在的事物用代码抽象的表达出来,用人类的自然思维方式去进行编程,强调以现实生活的事物(对象)为中心来思考问题和解决问题,是非常强大优秀的编程思维,是优秀的程序设计方法 (个人理解)面向:以一个事物为中心,为核心参考出发 (个人理解)对象:现实中客观存在的事物,进行抽象化带入程序转化为代码,将一个事物数据化的抽象名词 面向对象基础思想:使用类、对象、继承、封装、消息等基本概念进行程序设计 个人想法:面向对象的设计方法非常优秀,要多锻炼自己的思维和逻辑思路,面向对象并不会过于脱离现实,是有趣又易编辑的设置放大 比如将一个小狗抽象化,用面向对象 定义小猫:public class Cat extends FatherCat{} 小猫的一些属性: int age=1 String type=“美国短毛猫” String name=“小咪”…等属性 小猫的一些行为:public void eat(String food){ System.out.println(“小猫在吃”+food+“中”); } 这是面向对象的优秀设计方法,将现实生活客观存在的事物抽象化理解进行设计 成员变量(状态数据)+方法(行为)=类定义 面向过程以函数最大:eat(Cat,food) 面向对象以对象最大:Cat.eat(food) 两者区别还是面向对象(可读性更强更自然,一目了然 面相对象的基本特征
面向对象方法具有三个基本特征:封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism); 封装:将对象的细节隐藏起来,用一些公开的方法暴露该对象的功能; 个人比喻:你使用音乐软件听歌,想听什么歌就点击播放功能进行播放,但是你并不知道其播放原理和细节是什么,这就是封装,让用户使用功能而不需要去理解和知道其细节和原理; 继承:子类继承父类将会获得其方法和属性,子类会变成特殊的父类其扩展性更大,也是实现代码复用的重要手段,使用extends实现; 个人比喻:自己制作游戏,定义了一个怪物类,作为怪物的标准,新怪物都要继承这些行为(方法)和属性(成员变量)也可以进行修改,比如会飞的怪物和陆地上的怪物,他们的行走行为和攻击行为都可以进行重写,也成为了特殊的怪物(特殊的父类); 多态:是指子类对象可以直接赋值给父类变量但是运行时依旧是子类的行为特征,意味同一个类型的对象在执行同一个方法时会出现多种行为特征; 个人比喻:以鸟类为父类,鸵鸟和海鸥是其子类,在鸵鸟和海鸥执行多态的方法时
public class Bird{
String name="鸟类";
public void fly(){
System.out.println("飞翔");
}
}
class Ostrich extends Bird{
String name="鸵鸟";
public void fly(){
System.out.println("我只能在地上奔跑");
}
public void run(){
System.out.println("陆地上迅速奔跑");
}
}
class Seagull extends Bird{
String name="海鸥";
public void fly(){
System.out.println("我可以展翅高飞");
}
}
public static void main(String[]args){
Bird blueBird=new Bird();
blueBird.fly();
Bird seagull=new Seagull();
seagull.fly();
Bird ostrich=new Ostrich();
ostrich.fly();
ostrich.run();
System.out.println(seagull.name);
}
Bird bird = new Ostrich();//输出name变量是鸟类的,而运行不了run方法,如果方法有就是运行子类重写的方法 在多态时:属性看父类,方法看子类 类是对象的抽象,对象是类的实例 Java不支持多继承所以类的直接父类只有一个 面向对象实现了封装、继承、多态而基于对象只实现了封装,所以判断一门语言是否是面相对象,对于封装、继承、多态的实现则是缺一不可 2.2 UML(统一建模语言)介绍 OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程) OOA对目标进行分析建立模型进行文档化,OOD用面向对象的思想对OOA的结果进行细化,得出设计模型 UML就是这种用于描述、记录OOA和OOD结果的符号表示法 UML2.0组成: 静态图:用例图、类图、包图、组建图、对象图、部署图、复合结构图(2.0新增) 动态图:顺序图、通信图(对于1.x中的协作图)、状态机图、活动图、定时图(2.0新增)、交互概观图 UML图常用:用例图、类图、组建图、部署图、顺序图、活动图、状态机图;
|