一开始只学了C,8086汇编,自学了一点C++,一直对面向对象到底是什么有疑惑。
最近看了书籍以及上了相关课程,大致有了一定概念。
面向对象,或者是面向过程,都只是编程的一种思想,最终目的都是用计算机语言描述出来我们想做的事,想达到的目的。
一般来说,现实生活中,完成一件事,需要有一个或多个客体参与,再加之一定的行为。(即主谓宾?)
面向过程,是以行为为主体,简单说,我们在C中所写的函数,一般都有明显的“动作”意味,而函数参数除开一些常量,往往是这个动作的参与者,而参与者是可以不断变化的。
面向对象,是以客体为主体,客体当中包含了客体可能有的所有动作,而这个客体就是所谓的“类”。
比方说,“某人跳舞”这个事件,在过程语言中可能这样写:跳舞(某人),某人可以任意,你的女友,男友,等等
在面向对象语言种可能这样写,写一个 人“类”:
class 人{
string name;
string sex;
吃饭();
睡觉();
打豆豆();
跳舞() ;
}
之后再创建一个实例:人 女盆友=new 人();
要女友跳舞,就调用女友中的“方法”:跳舞。
要其他生物跳舞,就需要另外定义。
由此初步可以看出两者的端倪,可是恰恰就是两者对于主客体的转换,对现代编程有了巨大影响,使其更加易于编程。
想起了史铁生《想念地坛》的:我已不在地坛,地坛在我。岂不是有异曲同工之妙?