不知不觉已经来到北京一年了,接触编程也一年了,或许我已经不再是那个连HelloWord都要写了N遍都不理解的低级菜鸟了(因为现在是中级了!!~~依旧是菜鸟)
在之前从来没有接触过编程,也不知道什么面向对象编程,面向过程编程.我的代码人生就是从这面向对象编程开始的.
面向对象编程,接触了C#和Java两种编程语言,感触良多(说实话,我现在已经快记不得老师讲过的有哪些重点了).我根据自己所了解的谈谈这段时间的收获.
一.什么是面向对象编程?
最初,老师告诉我们C#和Java都是面向对象编程的语言.那时候懵懵懂懂的,甚至以为是面向'对象'敲代码.
其实,面向对象编程指的就是面向对象程序设计.面向对象编程(Object Oriented Programming,简称:oop,面向对象程序设计)是一种计算机编程架构
基本概念
面向对象程序设计中的概念主要包括:对象,类,抽象数据,封装,继承,多态(我自己当前能记起来的,在这里我只大概叙述一下,具体的会分模块另写文章)
- 对象(object),类的一个或多个实例
- 类(class),对象的抽象
- 封装(encapsulate),(我理解的)第一层意思:将属性与方法放在一起,生成一个新类的过程;第二层意思:将接口与实现分离的过程
- 继承(inheritance),类与类之间的关系,可以理解为一个类给其子类共享了一个或多个自己的结构和方法;子类可以对基类的行为进行拓展,重定义
- 多态(polymorphism),同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法
通过这一年来的学习和练习,我发现(编程思想也逐渐揭开了它神秘的面纱):
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
面向对象是将实物高度抽象化。
面向过程是一种自顶向下的编程。
我开始认为,面向对象编程,就是创造一个个的类,根据实际的项目赋予它们所应该具有的属性,已经行为,来帮助我们完成项目中所需要的功能.
那时候我并不认为,码代码是一种快乐的事情,只是机械的去创造我们所需要的东西,(或许是在学校接触的项目太少且小的缘故),我错误的认为
实现一个功能,代码不管谁来写都是一个样,都离不开那几个属性,方法.你写是这样,让我写还是这样.面对千篇一律的代码,真是让人提不起来兴趣.
让人高兴的只是,我自己实现了一个什么什么样的功能......回想起那时候的编码真是无聊且无趣.
直到有一天,老师在讲多态时说道一个比虚方法,抽象类更加抽象的概念:接口.
那时候,我听得迷迷糊糊,接口是嘛玩意?只是简单(老师说的)一种约定,作用就是使得实现接口的类或结构在形式上保持一致?
我当时听得是半知半解.直到我听到老师说了这么一句话"接口,就是一种能力!"
那一刹那我才真正意识到面向对象编程的实质其实就是创造一个虚拟的世界
(尽管之前老师一再说面向对象编程,类,对象其实跟现实世界中的事物差不多.但是我从未真正将这两者的关联在一起).
我可以在代码世界中创造出一个类(就好比这个世界中的人),实例化一个对象(比如说我自己),实现接口,就是赋予这个类一种能力.
那完成一个项目并不只是一通生硬的代码,一串字符.那是一个虚拟的世界啊,我的天,原来编程可以如此的美妙.
之后我才真正的爱上了编码.
虽然说:
使用面向对象的思维方法,其实是一个把业务逻辑从具体的编程技术当中抽象出来的过程,而这个抽象的过程是自上而下的,非常符合人类的思维习惯,也就是先不考虑问题解决的细节,把问题的最主要的方面抽象成为一个简单的框架,集中精力思考如何解决主要矛盾,然后在解决问题的过程中,再把问题的细节分割成一个一个小问题,再专门去解决细节问题。
因而一旦牢牢的抓住了这一点,你就会发现在软件设计和开发过程中,你自己总是会不知不觉的运用面向对象的思维方法来设计和编写程序,并且程序的设计和开发也变得不再那么枯燥,而一个合理运用面向对象技术进行设计和架构的软件,更是具备了思维的艺术美感。
之前我一直认为,程序员的工作,枯燥无味,每天对着电脑码代码.敲着生硬的键盘,面对着看着就像吐的英文字母.
是面向对象的思维给代码注入了程序员的灵魂,程序员早已不是我之前所认知的代码书写者,程序员具有无比的创造力和想象力,他的工作就是创建一个个虚拟的代码世界.
也希望面向对象编程能给你带来了无比的创作乐趣.