面向对象吐槽

OOP

面向对象程序设计(OOP)应该是大学老师最擅长教的一种设计模式. 谁都曾学过 // 中枪的举手!


但真实的情况是,它早已不如多年前那么大红大紫:


 “OO设计理念的价值最初在图形系统、图形用户界面和某些仿真程序中被认可。使大家惊讶并逐渐失望的是,很难发现OO设计在这些领域以外还有多少显著优点。其中原因值得我们深究一番。”——摘自《Unix编程艺术》4.5小节


过度的OO会产生厚重的胶合层,复杂的文档和令人感到层层叠叠的架构,即使只是去完成一件简单明了的事情

.

在走入过度OO的死胡同前,我认为学习OO仍然是件值得的事情.因为OO是那么的流行,流行不一定代表实用,但是一定符合人心.   //难道是程序员都向往着"对象"?


虽然OO不能解决一切,但是至少给了初学者解决部分问题的能力,把一个问题抽象为几个对象去完成一些事情,问题就顺利的解决了.


经常的,经过一些简单的面向对象的介绍,就开始讲"类"了,为什么对象要与类结合在一起呢? 


面向   类 !


首先,类是一些具有共性的对象的聚合,提炼出他们全部的共性之后,如果仍然不够解决问题,那么就使之继承,细化他们的特性.


其次,实际上C++的面向对象其实是面向类的,同类的对象内直接可以互相访问私有变量,也就是说对象的封装性因为类的相同而被打破,//典型例子重载操作符


而对于继承关系而言,对象可以访问protected.public的基类变量,但是,仅限于自己或同类,不可以访问基类独立对象的protected变量!//我知道这挺难理解的,尝试运行以下代码吧!

#include <iostream>
using namespace std;
class A{
public:
	A(){
		a = 1;
	}
protected:
	int a;
};
class B: public A{
public:
	int f(A & b){
		cout <<  b.a <<endl;
	}
};
int main(){
	B a,b;A c;
	a.f(c);
}


奇迹发生了! 你不能访问基类的变量了! 为什么? 因为面向"类"!.因为你可以通过继承"得到"基类的"特性",但是不能因此就妄图去访问基类对外隐私的部分,那些不属于你,你只得到了你继承后的,而不是原来那部分.很哲学,很赞.









逗你的  !


面向对象似乎越来越玄乎,细节越来越多,这让生活很不幸福! >__<

目前对面向对象的态度是,浅尝而不深入,多看看外面的世界,更好. 期待自己的面向函数吐槽~.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值