鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: boluobenbo

[已解决]关于面向对象中为什么要将函数与类进行绑定?

[复制链接]
发表于 2023-7-2 17:15:46 | 显示全部楼层
boluobenbo 发表于 2023-7-2 17:10
谢谢回复。
你会定义三个函数吗———-编程踢球下棋这三件事情的函数代码一样么?如果不一样那就只能编 ...

定义三个函数和类本身会没有关系,并且很混乱,在类里就有很明显的分明,就像给物品分类一样
隐藏函数并不是这个目的,因为你既然用了他这个代码,那你应该就是能看到这个代码本身,假如说一个类维护一个变量,变量是private,然后提供查找和修改的public函数,在修改的函数是访问你的修改是否合法,这样就能起到管理和管控作用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
 楼主| 发表于 2023-7-2 21:54:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-2 22:13:21 | 显示全部楼层
boluobenbo 发表于 2023-7-2 16:31
说的不对请指正
如果大象(输入)和冰箱(输出)都看成结构化数据。函数看成处理数据的方法。那么可以 ...

按你说的话冰箱就是输出呀,“通过赋值语句托付输出值” 没听懂

你是说要输出吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
 楼主| 发表于 2023-7-2 23:43:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-2 23:46:51 | 显示全部楼层
boluobenbo 发表于 2023-7-2 23:43
我的意思大象作为输入变量
冰箱作为输出变量
冰箱等于=f(大象)

对呀,但你不觉得写在类里面逻辑和使用都清晰了很多了吗
方法永远不是唯一的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
 楼主| 发表于 2023-7-3 06:20:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-3 06:29:27 | 显示全部楼层
boluobenbo 发表于 2023-7-3 06:20
请再看一下一楼的帖子

你说是陈尚涵的帖子吗
估计他跟我的意思可能不一样,他说的是 f1() f2(),我说的是xxx.f1()和f(xxx)
很抱歉我只会用py
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
 楼主| 发表于 2023-7-3 07:36:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-3 08:26:02 | 显示全部楼层
boluobenbo 发表于 2023-7-2 21:54
谢谢回复。后半段没看懂:
假如说一个类维护一个变量,变量是private,-------一般出于什么目的将一个变 ...

把变量设为private的目的是让程序员不直接访问到变量本身,只能通过其他函数对变量进行管理,那么我们就可以在修改函数里这么写:
public void xiugai(int x){
    if (x < 0){ //判断修改操作是否合法(在这个函数中即低于0)
        return; //退出函数
    } else {
        this -> n = x; //赋值
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-3 09:09:20 | 显示全部楼层
boluobenbo 发表于 2023-7-3 07:36
1楼,主贴:那么在类中定义函数的最主要目的是什么呢? 增加代码可读性可维护性?可以封装隐藏函数,保护 ...

所以也不是一定要绑定呀,你实在不想绑定也行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-3 10:30:07 | 显示全部楼层
当定义类时同时定义方法的主要目的是为了以下几个方面:

1. 封装和数据隐藏:类的方法提供了操作类数据的接口。这样做可以隐藏数据的具体实现细节,只暴露需要的操作方法给外部使用。这样的设计有助于控制对数据的访问,保护数据的完整性和安全性。

2. 提高代码的可读性和可维护性:将与类相关的操作定义为类的成员函数,可以使代码更加结构化和有组织性。通过在类中定义方法,代码的意图更加清晰,便于理解和维护。

3. 方便对象的使用:类的方法使得操作对象变得更加简洁和直观。通过调用对象的方法来操作数据,代码更符合人们对实际对象的思考方式。

4. 代码复用:类的方法可以被多个对象共享和重复使用。这样,相同类的不同对象可以调用相同的方法,执行相同的操作,实现代码的复用。

综上所述,类中定义方法的目的是将数据和操作封装在一起,以提高代码的可读性、可维护性和重用性,并提供对数据的控制和保护。虽然你可以将操作定义为类外部的函数来处理类数据,但将其定义为类的成员函数更符合面向对象的设计原则,使代码更加结构化、灵活和易于扩展。

如果回答对你有帮助,给我个最佳答案吧,求求了

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-3 11:09:56 | 显示全部楼层
本人最近也在学C++,下面为个人的理解:
最主要的目的(或者说是好处吧):
1. 在类内部的定义的函数(公共)是可以访问类的私密的成员;
2. 在父类中定义纯虚函数(抽象类),并指向子类,可以使用多态:
3. 函数也并不是必修的有的吧,可以不定义,我觉得不定函数的话,跟结构体没啥区别(成员都是公共的话)。
4. 就算类中定义了函数,实际也不算到类的大小里面,(这个最开始的时候,我以为定义函数,在类中当做一个指针去存储,但是好像也不是这么一回事

因为本人也是最近才学的C++,对一些概念的理解可能还是很片面,欢迎大佬们指正。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-3 16:09:13 | 显示全部楼层
编程追风梦 发表于 2023-7-3 10:30
当定义类时同时定义方法的主要目的是为了以下几个方面:

1. 封装和数据隐藏:类的方法提供了操作类数据 ...

chatgpt 请标注
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 07:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表