C和C++的面向对象专题(1)——何为面向对象

面向对象编程是一种思想,强调方法与属性的整合。本文从一个简单的窗口对象例子出发,解释面向对象的基本概念,包括对象的公开方法和私有属性。通过对比C函数和C++的类,阐述了面向对象如何简化代码并提高可维护性。同时,讨论了面向对象设计原则,如高内聚、低耦合,避免过度继承和重载,以及设计模式的合理使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题记:

面向对象是一种思想,而不是一门语言

我们上哪去找对象,都面向对象去了

本专栏文章列表

一、何为面向对象

二、C语言也能实现面向对象

三、C++中的不优雅特性

四、解决封装,避免接口

五、合理使用模板,避免代码冗余

六、C++也能反射

七、单例模式解决静态成员对象和全局对象的构造顺序难题

八、更为高级的预处理器PHP

九、Gtkmm的最佳实践

本系列文章属 西风逍遥游 原创,转载请注明出处:
西风世界 http://blog.youkuaiyun.com/sun_xiaofan

一、何为面向对象

现在学软件开发,都讲面向对象的编程模型,其实也很简单。用一句话来总结,面向对象就是将方法和方法的属性整合在一起,让每个方法引用的属性值尽可能在对象内部,对外保持简洁的接口。

实现面向对象的设计,目标不是写类,而是设计结构,对每一个对象设计良好的接口和封装模式,将优雅的接口提供给使用者,最大程度的降低代码耦合。

面向对象的设计,可以用一本书来讲解,但我们这里将演示面向对象的基本思想和如何实现

从一个简单的例子看对象

恩,那好,我们现在构建一个对象

class window {
public:
    window(int x, int y, int width, int height) {
        this.x = x; this.y = y;
        this.width = width;
        this.height = height;
    }
    void Show();

private:
    int x, y, width, height;

    // 也许你还可以添加更多属性,例如透明度、子元素列表、菜单、状态栏等待
};

这是一个基本的窗口对象,也许它并不能给你直观的印象,但我希望能通过其说明一些问题。
对象有公开方法,有私有属性,我们在构造这个对象的时候,将一些参数传入,那么我们发现,这个过程简化了我们对于某些方法的使用。

例如在C函数中,如何你希望绘制一些内容,那么你可能需要做的是写这样一个函数:

int Draw(struct window*, int, int, int, int);

将全部的参数传入进去,但如果使用次数多后,我们发现参数大多一样,那么不如把他们都打包进入window结构体中,于是函数变成了这样:

int Draw(struct window*);

这样我们只需要改变结构体中的值就可以了,这个思想,就是面向对象的基础,而C++正是让这要传入的结构体自动传入,进而演变为了this指针。

面向对象的设计原则

几乎软件的设计原则都是高内聚,低耦合。

C++的设计也是一样,类的公共方法应该尽可能清晰明确,简单好用,而不必要外部了解的信息,和细节过程,都放入到私有成员中,避免被误用。

避免过度继承和重载,虽然继承和重载很大程度上能够降低两个模块间的耦合,但其实现复杂,结构混乱,容易使得代码不够清晰。同样,也要避免设计模式的滥用。

C++的开发应该本着面向对象的思想,利用类的封装特性,将模块内部的部分高效的组织在一起,而接口,可以采用多态调用的方式,保证灵活性。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值