当前位置: 首页 > news >正文

软考中级_【软件设计师】知识点之【面向对象】

简介:

软件设计师考试中,面向对象模块为核心考点,涵盖类与对象、继承、封装、多态等基础概念,重点考查UML建模(类图/时序图/用例图)、设计模式(如工厂、单例模式)及SOLID设计原则。要求考生掌握对象间协作机制,具备需求分析、系统建模能力,并能通过高内聚低耦合设计解决实际问题,强调面向对象思想在软件工程中的实践应用。

一、面向对象和面向过程的区别

  1. 例如:把大象装入冰箱,需要多少步:
    1. 面向过程


2. 面向对象

二、面向对象的基本概念

  1. 面向对象= 对象+分类+继承+通过消息的通信

(一)、类

  1. 类是对想的抽象,对象是类的实例
  2. 类包含的方法和数据描述一组对象的共同行为和属性
    1. 方法:对应 行为
    2. 数据:对应 属性
public class Person{
    String name;
    String sex;
    void play(){
        // 具体行为
    }
}
  1. 分类
    1. 实体类:关键字(人、物)
      1. 例如:书本、课桌
    2. 接口类(边界类):关键字(媒介)
      1. 为用户提供一种系统合作交互的方式
        1. 例如:人的接口可以是web窗体、菜单、条形码
      2. 系统接口涉及把数据发送到其他系统
    3. 控制类:关键字(协调)
      1. 解释:控制类用来控制活动流,充当协调者
  2. 一般和特殊关系
    1. 一般表示父类或基类
    2. 特殊表示子类或派生类
  3. 例题:

(二)、对象

扩展:

行为的别名:方法、函数

属性的别名:状态

  1. 对象的组成:属性+对象名+方法
// 为一个person类创建一个对象
public class test{
    class Person {
        
    }
    public static void main(String args[]){
        Person p= new Person();
    }
}

(三)、消息

  1. 理解:给这个对象发消息,包含外界的消息
  2. 例如:一个类中有eat方法,
public class test{
   
    public static void main(String args[]){
        Person p= new Person();
        p.eat("汉堡"); // 发送消息
    }
}
  1. 例题:

二、方法重载

前提:方法名相同

  1. 方法重载分为三中情况
    1. 参数个数不同
    2. 参数类型不同
    3. 参数类型顺序不同

三、封装

  1. 记:对象是封装一组属性和行为的整体
  2. 属性私有化,对外提供set和get方法
  3. 方法私有化,使用private关键字修饰
  4. 例如
class Person{
    String name;
    public void setName(String name){
        this.name=name;
    }
    public String getName(){
        return this.name;
    }
    private void fun(){
        // 私有方法
    }
}

四、继承

关键字:extends

注意:私有属性不可背继承

  1. 继承是父类和子类之间共享数据和方法的机制
  2. 单重继承:一个子类继承一个父类
  3. 多重继承:一个子类继承多个父类
  4. 例题:

五、多态

编译:父类

运行:子类

  1. 不同的对象收到同一消息可以产生不同的结果

例如

public class test(){
    class Person{}
    class Student extends Person{}
    public static void main(String[] args){
        Person stu = Student();
    }
}
  1. 多态分类:

1. 通用:
    1. **参数多态:**
        1. 特征:是应用比较广泛的多态,被称为**最纯的多态**
    2. **包含多态:**
        1. 特征:一个类型是另一个类型的子类型
2. 特定:
    1. **过载多态:**
        1. 重载方法
    2. 强制多态:
        1. 特征:强制类型转换
  1. 例题:

  1. 动态绑定和静态绑定

多态在编译时 是静态绑定

多态在运行时 是动态绑定

六、面向对象设计原则

原则:

  1. 单一原则:对一个类来说,只有一个引起它变化的原因
  2. 开放-封闭原则:对扩展开放,对修改封闭
  3. 里式替换原则:基类出现的地方,子类一定也可以出现
  4. 依赖倒置原则:依赖抽象,不依赖细节/实现
  5. 接口分类原则:依赖抽象,不依赖具体
  6. 共同重用原则:重用包中的一个类,就要重用包左手拿个的所有类
  7. 共同封闭原则:一个变化对一个包产生影响,则对包中的所有类都产生影响
  8. 无环依赖原则:包的结构是一个五环图形

例题:

七、面向对象分析(OOA)

分析的目的:确定系统的功能、性能要求

包含5个活动

  1. 认定对象:定义问题,名词转为一个对象
    1. 例如:银行系统中的实质性对象:客户账务、清算。
  2. 组织对象:
  3. 描述对象间的相互作用:
  4. 确定对象的操作:
  5. 定义对象的内部信息:

八、面向对象设计(OOD)

  1. 将OOA锁创建的分析模型转为设计模型
  2. 目的:定义系统构造蓝图
  3. 5个活动
  1. 识别类及对象
  2. 定义属性
  3. 定义服务
  4. 识别关系
  5. 识别包

例题:

九、面向对象设程序设计(OOP)

十、面向对象测试

  1. 面向对象的综合测试是有底向上的测试
  2. 分为四个层次
  1. 算法层
  2. 类层
  3. 模板层
  4. 系统层

十一、扩展

  1. 一个类要实现一个接口,需要把该接口的所有方法都重写
  2. UML图基本图形
    1. 实现

2. 继承

  1. 斜体字为:抽象类
  2. 正体字为:类:可被实例化

十二、杂题

相关文章:

  • 线程的常见使用方法
  • 硬件基础(4):(2)认识ADC参考电压
  • 当服务器出现卡顿该怎么办?
  • MELON的难题
  • 09第三方库的使用
  • 关于无感方波启动预定位阶段
  • PAT乙级真题(2014·冬)
  • JavaWeb-mysql8版本安装
  • 【SpringBoot】统一功能处理
  • vite.config.js 是Vite 项目的配置文件,分析具体用法
  • 消息队列为什么会有消费组的概念,什么作用,以订单系统为例说明
  • Vue _总结
  • AutoAWQ - 易用的 4 位量化模型工具
  • 栈在数组、链表中的应用 ---- 十进制转二进制函数、十进制转八进制函数
  • 【音视频 | AAC】AAC编码库faac介绍、使用步骤、例子代码
  • 【AD】5-16 泪滴的添加
  • Python 2025:AI霸主地位受挑战?最新技术趋势与未来展望
  • 一周热点-Claude 3.7 Sonnet-在响应和思考模型之间切换
  • 电脑如何在系统默认的壁纸中切换自己喜欢的
  • 从技术角度看大语言模型进化技术路线与落地应用详解:未来的最佳实践方向是什么?
  • 做兼职的国外网站/全自动引流推广软件
  • 四博互联做的网站/保定网站seo
  • 炫酷一些的网站/百度seo公司哪家好一点
  • 上海建设工程检测登记的网站/2022双11各大电商平台销售数据
  • 网站分类 维护/网站运营推广选择乐云seo
  • 重庆电商平台网站建设/百度统计手机app