面向对象的基本概念——类和对象
1.类和对象,这两者之间的关系有点像“先有鸡” 还是“先有蛋”的关系一样,有一点纠缠。
从他们的定义就可以看出来:
用对象来定义类、用类来产生对象!
有的时候 在表达概念的时候,对象 与 类可以通用!
在设计软件系统的时候,对象是不存在的,
在软系统运行时, 在内存中创建对象。类不存在于物理世界
2.类和对象的定义:
类的定义:
A class is a description of a set of objects that share the same attributes, operations, relationships, and semantics “共享相同属性、操作、 方法、关系或者行为的一组对象的描述符” - Rumbaugh
对象的定义:
An object is an Instance created from a class. 一 个对象是根据一个类创建的一个实例 An instance’s behaviour and information structure is defined in the class. 类,定义了实例的行为和信息结构
Its current state (values of instance variables) is determined by operations performed on it. 对象的当 前状态(实例变量的取值)取决于作用于该对象的操 作
类举例如下图:
对象举例如下图:
3.类的构成、对象的构成:
类和对象结构图:
注意:概念之间的互用:
属性Attribute == 数据Data == 状态state == 信息 information
操作operation == 方法Method ==行为behaviour = = 职 责responsibility
4.软件功能是如何完成的:
类:定义了对象群体的逻辑结构,包括属性和操作
系统运行时,类作为产生对象的模板,在物理层面是不存在的
对象:系统运行时必须为每一个需要的对象分配内存、保存数据
对象存在于物理层面,每个对象都有自己的数据空间(内存)
所有的对象共享同一块代码空间
消息:对象之间的一种交流手段
就像我们日常工作中的各种交流手段
所有相关对象之间相互协作完成软件功能
上一篇: seurat-FindAllMarkers源码解析
下一篇: 面向对象之关于类和对象的创建和使用
推荐阅读
-
C++ 中的类和对象 (I)
-
面向对象语言的三个特点:封装 继承 多态性 (II) - 继承
-
面向对象的用电信息数据交换协议
-
35 岁实现财务*,腾讯程序员手握2300万提前退休?-1000万房产、1000万腾讯股票、加上300万的现金,一共2300万的财产。有网友算了一笔账,假设1000万的房产用于自住,剩下1300万资产按照平均税后20-50万不等进行计算,大约花上26-60年左右的时间才能赚到这笔钱。也就是说,普通人可能奋斗一辈子,才能赚到这笔钱。在很多人还在为中年危机而惶惶不可终日的时候,有的人的35岁,就已经安全着陆,试问哪个打工人不羡慕?但问题是有这样财富积累必然有像样的实力做靠山。没有人可以不劳而获。 看到这里,肯定有人说,那么对于普通人来说,卷可能真就成了唯一的出路。但是卷也有轻松的卷,“偷懒”的卷法,对于程序员而言,刨除掉一时无法改掉的开会传统占用的大部分时间,如何把有限的时间和精力放在真正重要的架构设计、需求设计上,而不是重复的造*,编码、改bug、手动测试。因此在科技改变生活的今天,学会使用AI工具成为程序员们的必备技能。 以全栈式全自动的软件开发工具飞算SoFlu软件机器人为例,作为全球首款面向微服务架构设计和最佳实践的软件机器人,SoFlu软件机器人改变了原来手工编码的作业模式,通过可视化拖拽方式以及参数配置就能实现等同于编写复杂代码的业务逻辑,在设计业务逻辑时就完成了微服务应用开发,做到“业务即图,图即代码”,实现“软件开发,十倍提效”。 而作为飞算SoFlu软件机器人的一个重要组成部分,FuncGPT(慧函数)支持所有类型函数创建。通过自然语言描述Java函数需求,实时生成高质量、高可读性的Java函数代码。生成代码可直接复制到IDEA,或一键导入Java全自动开发工具函数库。 FuncGPT(慧函数)具有五大核心能力: ● 自然语言:通过自然语言即可生成函数,降低软件开发门槛。 ● 秒级函数开发:全自动秒级开发函数,秒级完成,效率千倍提升。 ● 一站式函数开发应用:函数生成即可直接应用,效率、安全有保障。 ● 质量可靠:生成的函数代码符合业界规范、具备良好的可读性,符合最优解。 ● 灵活生成:可以根据开发人员的具体需求生成并支持调整和修改。 以“将文件流转换为File对象”这个需求为例,以下是FuncGPT(慧函数)秒级生成的代码: / 类名:FileConverter // 函数名:convertStreamToFile // 函数功能:将文件流转换为File对象 // POM依赖包:无 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; public class FileConverter { /** * 将文件流转换为File对象 * @param inputStream 文件流 * @param filePath 文件路径 * @param fileName 文件名 * @return 转换后的File对象 * @throws IOException 如果发生I/O异常 */ public static File convertStreamToFile(InputStream inputStream, String filePath, String fileName) throws IOException { File file = new File(filePath + File.separator + fileName); // 创建File对象 try (FileOutputStream outputStream = new FileOutputStream(file)) { // 创建文件输出流 byte buffer = new byte[1024]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { // 从文件流读取数据并写入文件 outputStream.write(buffer, 0, bytesRead); } } return file; // 返回转换后的File对象 } } // 函数示例 // 将文件流转换为File对象示例 // 入参:inputStream,文件流 // 入参:filePath,文件路径 // 入参:fileName,文件名 // 出参:file,转换后的File对象 // 调用示例: // InputStream inputStream = new FileInputStream("example.txt"); // String filePath = "C:\\Users\\User\\Documents"; // String fileName = "example.txt"; // File file = FileConverter.convertStreamToFile(inputStream, filePath, fileName); // System.out.println(file.getAbsolutePath); // 输出结果:例如,将文件流转换为File对象后,文件的绝对路径为:C:\Users\User\Documents\example.txt // 则输出结果为:C:\Users\User\Documents\example.txt 通过分析,不难发现以上代码:
-
关于面向对象的 python 的三个练习题
-
掌握 JavaScript 面向对象编程的核心代码:深入分析 JavaScript 面向对象机制的对象基础、原型模式和继承策略全面指导高效创建高质量、可维护的代码 - V. 继承机制
-
实现文件上传和读取的 Blob 对象
-
详细解释 Python 中的 __getitem__ 方法和切片对象
-
刷问卷调查星型股票的 python 实现(面向对象)
-
JAVA 系列初学者参考类和对象 (2)