面向对象程序设计中的一些问题

简介: 面向对象程序设计中的一些问题

目录

问题一、什么是面向对象程序设计

问题二、对象是什么?类是什么?

问题三、对象和类之间的关系又是什么?

问题四、什么是消息,消息又有哪性质?


问题一、什么是面向对象程序设计

面向对象程序设计是一种新型的程序设计的方式,这种方式的主要特征如下:

程序 =  对象 + 消息,在面向对象中也有三大非常重要的特性,那就是继承,多态以及封装

面向过程编程的核心是过程(流水线思维)。过程是解决问题的步骤。面向过程的设计就像仔细设计一条流水线,以考虑何时处理以及处理什么。优点是它大大降低了编写程序的复杂性。您只需要沿着要执行的步骤堆叠代码。

缺点:使用一组流水线或进程来解决问题,代码对整个程序的影响是非常大的。而面向对象解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,对一个对象参数的修改也是非常简单的

下面来看一个定义类的例子:

class Dog:
    def __init__(self,name,blood,aggr,kind):
        self.name = name
        self.hp = blood
        self.aggr = aggr
        self.kind = kind
    def bite(self,person):
        person.blood -= self.aggr

在上面我们就按照Python的方式定义了一个Dog类,并且给这个类创建了许多类的属性以及类的方法

问题二、对象是什么?类是什么?

按比较官方的话语来说对象,就是描述其属性的数据,以及对这些数据施加的一组操作封装,在一起统构成的统一体,对象可以认为是数据加操作,能够用对象完成的操作就可以表示它动态行为,我们通常也把这种操作称为方法,类的定义就更加简单了,它就是将具有相同的数据属性和数据方法的对象抽象出来形成集合体,也就是说类就是对具有相同数据结构和相同操作的一类对象的描述

问题三、对象和类之间的关系又是什么?

用非常简单的话来说,对象就是类的一种具体化,具体到某一个独一无二的个体,而类就是对各种具有相似特征的对象的一种抽象

类:具有相同特征的一类事物(人类,狗类)

对象/实例:具体的某一个事物(人类中的独一无二的你,比如狗类中的具体的某一条狗)

实例化:类——>对象的过程

下面我们就来实现一个类中对象的实例化:

class Dog:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def bite(self,person):
        person.blood -= self.aggr
wangcai = Dog('旺财',4)    //这样我们就实例化了一个对象

问题四、什么是消息,消息又有哪性质?

在面向对象的程序设计之中,一个对象向另一个对象发出的请求,我们就把它称之为消息,我们可以通过接收的消息来执行相对应的操作,我们只有通过消息才能完成对象与对象之间的交互

相关文章
|
C# 开发工具 数据库
一个比较全面的C#公共帮助类
一个比较全面的C#公共帮助类
244 0
|
Android开发 开发者
Error:Could not find com.android.support:appcompat-v7:27.0.2.
Error:Could not find com.android.support:appcompat-v7:27.0.2.
|
6月前
|
机器学习/深度学习 人工智能 算法
NeurIPS 2024:拆解高复杂运筹问题的砖石,打破数据稀缺的瓶颈,中科大提出高质量运筹数据生成方法
中国科学技术大学团队在NeurIPS 2024提出MILP-StuDio方法,通过拆解与重构MILP实例的块结构生成高质量数据,解决MILP领域数据稀缺问题。该方法保持实例可行性和计算难度,实验表明可将求解时间减少超10%。尽管存在块结构识别依赖和问题类型覆盖局限,但仍为提升MILP求解器性能提供新思路。
140 8
|
11月前
|
物联网
物联网卡没使用会产生费用吗
物联网卡的使用费用情况通常取决于多个因素,包括卡片的类型、服务商的政策、套餐选择以及是否激活并实际使用等。对于“物联网卡没使用是否会产生费用”这一问题,答案并非绝对,而是需要根据具体情况来判断。
|
机器学习/深度学习 存储 算法
【博士每天一篇论文-技术综述】Machine Learning With Echo State Networks 一篇系统讲解ESN知识的五星文章
本文是一篇技术报告,全面介绍了回声状态网络(ESNs)的数学模型、属性、意义、训练方法、深度ESN的发展、应用和局限性,并探讨了未来的研究方向,为理解ESNs在机器学习中的应用提供了系统性的综述。
305 3
|
设计模式 C++ 开发者
C++一分钟之-智能指针:unique_ptr与shared_ptr
【6月更文挑战第24天】C++智能指针`unique_ptr`和`shared_ptr`管理内存,防止泄漏。`unique_ptr`独占资源,离开作用域自动释放;`shared_ptr`通过引用计数共享所有权,最后一个副本销毁时释放资源。常见问题包括`unique_ptr`复制、`shared_ptr`循环引用和裸指针转换。避免这些问题需使用移动语义、`weak_ptr`和明智转换裸指针。示例展示了如何使用它们管理资源。正确使用能提升代码安全性和效率。
264 2
|
Linux Docker Python
【docker】Mac M1 构建 x64 linux镜像
【docker】Mac M1 构建 x64 linux镜像
274 0
|
Java 关系型数据库 MySQL
JDBC编程相关知识(实现图书管理系统进阶版)(上)
JDBC编程相关知识(实现图书管理系统进阶版)
149 0
|
SQL 数据挖掘 关系型数据库
【建议收藏】Mysql+Flink CDC+Doris 数据同步实战(上)
【建议收藏】Mysql+Flink CDC+Doris 数据同步实战
7046 0
【建议收藏】Mysql+Flink CDC+Doris 数据同步实战(上)
|
运维 数据中心 数据安全/隐私保护
【Terraform实现云服务基础设施既代码(IaC)案例实战-3】:Terraform+Docker+Portainer+Gitlab+GitlabRunner搭建Tree项目
前言树苗科技公司业务上云2年有余,随着技术的不断发展。运维团队支持业务变更配置、开资源、删资源等过程加班到深夜一两点已是家常便饭。为了进一步提升工作效率,运维总监张三决定对当前业务交付路径进行统一梳理,借助IaC的理念和Terraform自动化工具逐步实施运维生产自动化,改善组内成员频繁加班且重复劳...
694 57
【Terraform实现云服务基础设施既代码(IaC)案例实战-3】:Terraform+Docker+Portainer+Gitlab+GitlabRunner搭建Tree项目

热门文章

最新文章