【软件工程】—面向对象技术

前言

面向对象的思想已经设计到软件开发的各个方面,一切事物皆对象,所以对象是无处不在的,通过面向对象的方式,将现实生活的事物抽象成对象,有利于对复杂的系统进行分析,设计与编程。能有效提高编程的效率。

什么是面向对象

定义:面向对象=对象+类+继承+通信
如果一个软件系统使用这斯个概念设计和实现的,则是面向对象的,面向对象的程序设计的基础是类。
对象:是系统中用来描述客观事物的一个实体,是一个基本的单位。由一组属性,操作组成。
对象可是是具体事物也可以是系统中的某些抽象,比如把人看作类,男生,女生就是两个对象,小兰就是女生中具体对象,小明就是男生中具体对象。
类:是具有相同属性和服务的一种对象的集合,对属于该类的全部对象提供了同一的数据描述包括属性和服务两个部分。
比如车可以分为汽车,轿车,火车,都是车这就是类。
类和对象的关系:对象是类的实例,类是对象的模板。
继承:一个类可以派生子类(派生类),而子类对象自动具有父类对象的特性,这就是继承性。
比如:你爸是厨师,你也是,子承父业
封装:封装是面向对象的特征之一,是对象和类概念的主要特性,封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。
比如你到学校去,传达室不让进,这就是把学校封装起来,必须通过传达室这个公共接口才能进入。
多态性:多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。
比如水果类的颜色,每个水果的颜色不同,这就是多态。颜色就是接口。

面向对象模型化技术OMT技术:

对象模型化技术分析时收集的信息构造在三种类模型中,即对象模型,功能模型和动态模型。
功能模型定义“做什么” 动态模型定义“何时做”对象模型定义”对谁做“。
对象模型 :是三个模型中最关键的一个,它的作用是描述系统的静态结构,包括类和对象。在OMT中,类与类之间的关系叫关联,关联,有聚合,限定,角色。
动态模型:系统的控制逻辑,包括两个图状态图事件追踪图。
状态图:一个状态和事件的网络,描述动态行为。
这里写图片描述
事件追踪图:描述时间的执行过程,主要是发生的时间先后。

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
实验目的:了解面向对象程序设计的基本概念和方法,掌握基本的面向对象程序设计技能。 实验要求:通过编写一个简单的学生信息管理系统,掌握面向对象程序设计的基本概念和方法,能够熟练运用类、对象、继承、多态等面向对象程序设计技术。 实验步骤: 1. 确定系统功能 本次实验的学生信息管理系统需要包含以下功能: - 添加学生信息 - 删除学生信息 - 修改学生信息 - 查询学生信息 - 显示所有学生信息 2. 设计类的结构 根据系统功能,设计出以下类的结构: - 学生类(Student):包含学生的姓名、学号、性别、年龄等基本信息。 - 学生信息管理类(StudentManager):包含添加学生信息、删除学生信息、修改学生信息、查询学生信息、显示所有学生信息等功能。 3. 编写代码 根据类的结构,编写代码实现系统功能。具体实现方法可以参考以下步骤: - 定义学生类(Student),包含学生的姓名、学号、性别、年龄等基本信息。 - 定义学生信息管理类(StudentManager),包含添加学生信息、删除学生信息、修改学生信息、查询学生信息、显示所有学生信息等功能。 - 在主函数中实现菜单功能,让用户选择需要执行的操作。 以下是示例代码: ```java import java.util.ArrayList; import java.util.Scanner; class Student { String name; String id; String gender; int age; public Student(String name, String id, String gender, int age) { this.name = name; this.id = id; this.gender = gender; this.age = age; } public void printInfo() { System.out.println("姓名:" + name); System.out.println("学号:" + id); System.out.println("性别:" + gender); System.out.println("年龄:" + age); } } class StudentManager { ArrayList<Student> students = new ArrayList<Student>(); public void addStudent() { Scanner scanner = new Scanner(System.in); System.out.print("请输入学生姓名:"); String name = scanner.nextLine(); System.out.print("请输入学生学号:"); String id = scanner.nextLine(); System.out.print("请输入学生性别:"); String gender = scanner.nextLine(); System.out.print("请输入学生年龄:"); int age = scanner.nextInt(); students.add(new Student(name, id, gender, age)); System.out.println("添加成功!"); } public void deleteStudent() { Scanner scanner = new Scanner(System.in); System.out.print("请输入要删除的学生学号:"); String id = scanner.nextLine(); for (int i = 0; i < students.size(); i++) { if (students.get(i).id.equals(id)) { students.remove(i); System.out.println("删除成功!"); return; } } System.out.println("没有找到该学生!"); } public void updateStudent() { Scanner scanner = new Scanner(System.in); System.out.print("请输入要修改的学生学号:"); String id = scanner.nextLine(); for (int i = 0; i < students.size(); i++) { if (students.get(i).id.equals(id)) { System.out.print("请输入学生姓名:"); String name = scanner.nextLine(); System.out.print("请输入学生性别:"); String gender = scanner.nextLine(); System.out.print("请输入学生年龄:"); int age = scanner.nextInt(); students.set(i, new Student(name, id, gender, age)); System.out.println("修改成功!"); return; } } System.out.println("没有找到该学生!"); } public void searchStudent() { Scanner scanner = new Scanner(System.in); System.out.print("请输入要查询的学生学号:"); String id = scanner.nextLine(); for (int i = 0; i < students.size(); i++) { if (students.get(i).id.equals(id)) { students.get(i).printInfo(); return; } } System.out.println("没有找到该学生!"); } public void printAllStudents() { for (int i = 0; i < students.size(); i++) { students.get(i).printInfo(); } } } public class Main { public static void main(String[] args) { StudentManager studentManager = new StudentManager(); Scanner scanner = new Scanner(System.in); while (true) { System.out.println("请选择要执行的操作:"); System.out.println("1. 添加学生信息"); System.out.println("2. 删除学生信息"); System.out.println("3. 修改学生信息"); System.out.println("4. 查询学生信息"); System.out.println("5. 显示所有学生信息"); System.out.println("0. 退出"); int choice = scanner.nextInt(); scanner.nextLine(); switch (choice) { case 0: System.out.println("谢谢使用!"); System.exit(0); break; case 1: studentManager.addStudent(); break; case 2: studentManager.deleteStudent(); break; case 3: studentManager.updateStudent(); break; case 4: studentManager.searchStudent(); break; case 5: studentManager.printAllStudents(); break; default: System.out.println("无效的选择!"); } } } } ``` 4. 运行程序 编译代码并运行程序,测试系统功能是否正常。 实验总结: 通过本次实验,我们学习了面向对象程序设计的基本概念和方法,掌握了基本的面向对象程序设计技能,能够熟练运用类、对象、继承、多态等面向对象程序设计技术。在实际编程中,需要根据具体问题进行类的设计,合理运用面向对象程序设计技术,编写出高效、可靠、易于维护的程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值