手机怎么防止网站跳转,python可以写网页吗,绍兴网站关键词优化,做鞋设备网站面向过程和面向对象的区别
面向过程#xff1a;当事件比较简单的时候#xff0c;利用面向过程#xff0c;注重的是事件的具体的步骤/过程#xff0c;注重的是过程中的具体的行为#xff0c;以函数为最小单位#xff0c;考虑怎么做。
面向对象#xff1a;注重找“参与者…面向过程和面向对象的区别
面向过程当事件比较简单的时候利用面向过程注重的是事件的具体的步骤/过程注重的是过程中的具体的行为以函数为最小单位考虑怎么做。
面向对象注重找“参与者”将功能封装进对象强调具备了功能的对象以类/对象为最小单位考虑谁来做。
二者相辅相成并不是对立的。
解决复杂问题可以通过面向对象方式便于我们从宏观上把握事物之间复杂的关系具体到微观操作仍然使用面向过程方式来处理。
面向对象三个阶段
【1】面向对象分析OOA -- Object Oriented Analysis
从对象抽取出类类里面有什么 动词--》动态特性--》方法名词--》静态特性--》属性
【2】面向对象设计OOD -- Object Oriented Design
先有类再有对象
【3】面向对象编程OOP -- Object Oriented Programming
如何理解Java的面向对象
面向对象编程的核心主要是对象、类、封装、继承、多态以及抽象。
首先是将万事万物都看成一个个具体的对象而类就是抽取一部分对象共同的属性、行为等构建的一个用于创建这类对象的模板封装则是为了提高数据的安全性通过访问修饰符去控制类的相关权限继承则是通过子类继承父类的属性和方法来提高代码的复用当然也是多态的前置条件而多态则是通过方法的重载和重写来简化程序的调用提高代码的灵活性和可拓展性最后则是抽象通过抽象类和接口的方式来解决单继承的不足进一步提高代码的可拓展性和可维护性。
面向对象三大特性
封装(Encapsulation)
封装的本质就是把该隐藏的隐藏起来该暴露的暴露出来。
封装的主要目的是隐藏对象内部的复杂性和实现细节只对外公开简单的接口。
封装是一种信息隐藏技术在java中通过访问修饰符如private、protected、public等来实现控制用户对类的修改和访问数据的程度其中private是最严格的访问级别它限制了类外部对类内部成员的访问。
适当的封装可以让程式码更容易理解和维护也加强了程式码的安全性。
封装的好处 提高代码的安全性通过隐藏类的内部实现细节封装可以防止外部代码直接访问和修改类的内部状态从而减少了错误的发生。 提高代码的复用性封装使得类的内部实现可以独立于外部使用因此可以在不同的上下文中重用同一个类。 提高代码的可维护性由于封装隐藏了类的内部实现因此当需要修改类的内部实现时只需要修改类的内部代码而不需要修改使用该类的外部代码。 封装的设计也就是所谓的“高内聚低耦合” 高内聚类的内部数据操作细节自己完成不允许外部干涉;低耦合仅对外暴露少量的方法用于使用。 隐藏对象内部的复杂性只对外公开简单的接口。便于外界调用从而提高系统的可扩展性、可维护性。 继承(Inheritance)
继承的本质就是子类继承父类所定义的内容。
继承就是让一个类继承另一个类的属性和方法。通过继承子类可以重用父类的代码而不需要重新编写相同的代码。
继承是代码复用的重要手段之一也是多态性的基础。
继承的好处 提高代码的复用性子类可以继承父类的属性和方法从而避免了代码的重复编写。 便于代码的扩展通过继承可以在不修改父类代码的情况下通过扩展子类来添加新的功能。 支持多态性多态性是面向对象编程的一个重要特性。 注意 在Java中一个类只能直接继承一个父类单继承但可以通过多层继承来间接继承多个类。 继承具有传递性即子类会继承父类以及父类的父类直到Object类的所有非私有属性和方法。 父类的私有成员属性和方法虽然被子类继承但子类不能直接访问它们。子类只能通过父类提供的公共或受保护的方法来间接访问这些私有成员。 多态(Polymorphism)
多态的本质就是通过对于同一个方法调用然后由于其实现子类的不同来实现不同的需求。
多态就是可以用统一的接口来操作不同的对象。当通过父类类型的引用调用方法时由于多态的存在会根据引用所指向的对象的实际类型来调用相应的方法这就实现了多态。
Java中的多态通过继承和方法重写实现 继承子类通过继承获得父类的属性和方法从而可以扩展父类的功能。 方法重写子类根据需要重写父类中的方法以改变方法的行为。 多态的设计也就是所谓的“开闭原则” 对扩展是开放可以通过实现不同子类实现不同的能力对修改关闭避免了修改旧代码。 类与类之间的关系
一、继承关系
继承指的是一个类称为子类、子接口继承另外的一个类称为父类、父接口的功能并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识在设计时一般没有争议性。
在UML类图设计中继承用一条带空心三角箭头的实线表示从子类指向父类或者子接口指向父接口。 二、实现关系
实现指的是一个class类实现interface接口可以是多个的功能实现是类与接口之间最常见的关系。在Java中此类关系通过关键字implements明确标识在设计时一般没有争议性。
在UML类图设计中实现用一条带空心三角箭头的虚线表示从类指向实现的接口。 三、依赖关系
简单的理解依赖就是一个类A使用到了另一个类B而这种使用关系是具有偶然性的、临时性的、非常弱的但是类B的变化会影响到类A。比如某人要过河需要借用一条船此时人与船之间的关系就是依赖。表现在代码层面让类B作为参数被类A在某个method方法中使用。
在UML类图设计中依赖关系用由类A指向类B的带箭头虚线表示。 四、关联关系
关联体现的是两个类之间语义级别的一种强依赖关系比如我和我的朋友这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的一般是长期性的而且双方的关系一般是平等的。关联可以是单向、双向的。表现在代码层面为被关联类B以类的属性形式出现在关联类A中也可能是关联类A引用了一个类型为被关联类B的全局变量。
在UML类图设计中关联关系用由关联类A指向被关联类B的带箭头实线表示在关联的两端可以标注关联双方的角色和多重性标记。 五、聚合关系
聚合是关联关系的一种特例它体现的是整体与部分的关系即has-a的关系。此时整体与部分之间是可分离的它们可以具有各自的生命周期部分可以属于多个整体对象也可以为多个整体对象共享。比如计算机与CPU、公司与员工的关系等比如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。表现在代码层面和关联关系是一致的只能从语义级别来区分。
在UML类图设计中聚合关系以空心菱形加实线箭头表示。 六、组合关系
组合也是关联关系的一种特例它体现的是一种contains-a的关系这种关系比聚合更强也称为强聚合。它同样体现整体与部分间的关系但此时整体与部分是不可分的整体的生命周期结束也就意味着部分的生命周期结束比如人和人的大脑。表现在代码层面和关联关系是一致的只能从语义级别来区分。
在UML类图设计中组合关系以实心菱形加实线箭头表示。 七、总结
对于继承、实现这两种关系没多少疑问它们体现的是一种类和类、或者类与接口间的纵向关系。其他的四种关系体现的是类和类、或者类与接口间的引用、横向关系是比较难区分的有很多事物间的关系要想准确定位是很难的。前面也提到这四种关系都是语义级别的所以从代码层面并不能完全区分各种关系但总的来说后几种关系所表现的强弱程度依次为组合聚合关联依赖。