关于C++面向对象
关于C++面向对象,我有件事一直不太明白 比如vector类 或者Sting类 俺们include了 就可以直接用了,但是,我自己编的类,可重用性非常差,因为,在一个类(1)中,声明定义了里一个我自己编的类(2),可能在类(2)中又有我自己写的类3,层层嵌套,这样在include的时候不就得包含很多类了?
拿个实例来说,我编了一个图书管理系统:有登录注册功能,还有学生、老师、管理员借书还书功能,编完之后,假如别的同学想利用我编的类(实现某个功能),他只能把我的所有文件include了 因为我的类镶嵌性很强,这个是不是不符合面向对象的特点?谁能帮帮我?
[解决办法]
将要声明和定义的类都放在同一个头文件中。。嘻嘻
[解决办法]
不符合,这涉及到代码的可复用性,确实很难的。
[解决办法]
http://www.cppblog.com/twzheng/archive/2007/05/07/23584.html
[解决办法]
LZ的case,相对于面向对象来说,本质上是哪些开放?哪些封闭?哪些扩展?
至于具体的#include,推荐:
http://www.cyd360.tk/2011/03/108
[解决办法]
lz似乎对面向对象不了解啊,object-oriented programming (OOP)
但我劝lz千万别问别人什么是面向对象,别人通常只会回答一种方法,一种风格...
在c++中只要满足封装,继承,多态就属于面向对象风格,那么为什么要面向对象?
1.模块化设计
以前的面向功能的风格是以函数和变量为基础,有什么功能需求我就写啥函数,最后导致函数越来越多,都分不清什么时候该调用哪个了,现在引入了对象之后,我们就可以模块化设计,不同的对象有不同的职责:比如学生回答考试问题//student->answer(); 老师给分:teacher->marking()
不同的对象有不同的方法,这样使得我们的系统设计更加人性化,符合现实生活的交互。
lz提到过更种类反复嵌套。。。其实这是肯定的,这样做的目的是分工!
比如类A里嵌套了类B,这个时候A属于高层类,或者说他是管理类,这种类通常负责接收用户的请求,然后分析请求,之后把具体的任务分配给B去完成,也就是说A不负责执行,只负责分析和分配任务,B负责具体操作,听命于A
其实模块化设计是OOP带给我们最大的提升之一
2.重用
这就不多说了,继承嘛,当然模板也可以算。
[解决办法]
有专门的写法,防止重复包含
[解决办法]
把一个类的声明放在头文件里,实现放在一个或几个源文件。
要用这个类就include这个类的头文件。
了解一下编译链接的步骤,学习一下源文件的组织。
进一步就是写makefile。