• 大话设计模式感悟(1)——OOP(面向对象编程)基础


    一、设计模式

                初看《大话设计模式》感觉设计模式就以一些前人总结的代码设计模版,这些模版就是为了让代码可以重用、容易让人理解。简单的说就是为了让我们做的软件能像电脑主板一样,只要提供一些CPU接口,内存接口等等,就可以组装一台电脑。不同的设计模式就像不同型号的主板一样,只是更改了一些CPU接口,内存接口的位置、数量、规格。

    二、OOP(面向对象)

              乍一看面向对象,有人肯定会问什么是对象?什么是面向对象编程?

          对象就是类的实例化,什么是类?做个比喻电脑中的CPU就是一个类(下面文章中就叫它CPU类,内存就叫内存类),我们熟知的Intel Core i7 CPU 、Intel Core i5 CPU就是CPU类的实例化即对象。

          面向对象编程是指,面向对象的编程设计。做个比喻组装电脑就是一种面向对象的设计,利用许多CPU类,内存类,显卡类等等,然后把这些类实例化以后组装成了一台电脑,而在编程中我们就是利用这种思想把具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。然后把它们实例化以后组装成一个程序。

    三、OOP基础

               1)类与实例

               类就是具有相同特性(数据元素)和行为(功能)的对象的抽象,就像上面所说的CPU类,内存类。

               实例就是对象的另一种说法,对象是一个自包含的实体,用一组可识别的特性和行为来标识。即CPU类中不同型号的CPU(Intel Core i7 CPU)。

              2)方法重载。

                    方法重载是让类以统一的方式处理不同类型数据的一种手段。做个比喻:我们写好的word文档,当我们保存word时候可以保存为doc格式的也可以保存docx格式的,它们都是用保存这个方式处理,但是一个是doc格式的一个是docx格式的数据的类型不同。

              3)属性与修饰符。

                      属性是一个方法或一对方法。即比如我们穿的衣服,衣服的颜色就是衣服的一个属性。

               修饰符用于限定类型以及类型成员的申明的一种符号。有Public、Private、Protected、Abstract、Const、Event、Extern、Override、Readonly等。即比如我们穿衣服,内裤得穿在最里面不能让别人看到它的修饰符就是Privatve,外套得穿在外边能让别人看到它的修饰符就是Public。我觉得修饰符就是规定这个东西只能在哪使用,其它地方使用不了。

             4)封装。

             封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。

             做个比喻一个CPU就是一个很好的封装,它就是只提供了一个接口让它能与主板相结合的接口,而我们根本看不到它内部是怎么做的。

           封装特点:1.良好的封装能够减少耦合。就像我们组装电脑的时候CPU坏了就只用换个CPU就行了。而不用把主

                                板,内存什么的全部都换掉。

                             2.类内部的实现可以自由地修改。比如我们的CPU内部不断的升级从奔腾到酷睿,它的工艺不断的改

                             变,

                                           3.类具有清晰的对外接口。比如我们CPU对主板就有一个接口让CPU能插入主板上。

              5)继承。

                     对象的继承代表了一种“is-a”的关系,指一个对象直接使用另一对象的属性和方法。做个比喻就是你是一个类你爸爸是一个类,你学会了你爸爸的一些手艺还有你的某个地方长的很像你爸爸,这就是继承。

              6)多态。

                    多态标识不同的对象可以执行相同的动作,但要通过它们自己的实现代码来执行。比如一对父子,父亲是非常有名的京剧,儿子长大了,模仿父亲的戏也惟妙惟肖。有一天他父亲病了,上不了台表演,而票都早就卖出了,退票显然不行,那就决定儿子代替父亲上台表演,京剧化妆以后谁都不认识,只要唱好了就过去了。唱戏就是通过多态来完成的。

              注意事项:1.子类以父类的身份出现,儿子代表父亲表演,化妆后就是已父亲的身份表演。

                                2.子类在工作时按照自己的方式实现。儿子模仿的再好那也是模仿。儿子只有以自己的方式去演

                                    出。

                               3.子类以父类的身份出现时,子类特有的属性和方法不可以使用。儿子学习这么多年,其实已经有了

                                  自己的创作,但是在这个时候,是代表父亲表演时绝活不能表现出来。

               7)重构。

                      重构就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。就像电脑原来有一个内存我现在再加一个内存条。

              8)抽象类。

                    抽象类是指一个抽象的概念形成的类。这种类是用来继承的。比如猫、狗、熊、猴子它们的抽象类就是动物。

             注意几点:1.抽象类不能实例化。

                               2.抽象方法是必须被子类重写的方法。

                               3.如果类中包含抽象方法,那么类就是必须定义抽象类,不论是否还包含其他一般方法。

             9)接口。

                   接口就是把隐式公共方法和属性组合起来,以封装特定功能的以个集合。打个比喻就是飞机会飞,鸟也会飞,飞这个方法就可以弄成一个接口,这样就可以达到类的复用。

            抽象类与接口的区别:1.类是对对象的抽象;抽象类是对类的抽象;接口是对行为的抽象。

                                                2.如果行为跨越不同类的对象,可使用接口;对于一些相似的类对象用继承抽象类。

                                                3.抽象类是从子类发现了公共的东西,泛化出父类,然后子类继承父类。接口是根本不

                                                   知子类的存在,方法如何实现还不确认,预先定义。

            10)集合与数组。

                  集合与数组的区别:1.数组内存中是连续存储,可以快速而容易地从头到尾遍历元素,数组的变量大小是固

                                             定的,在两个元素之间添加元素是很困难的。

                                             2.集合用于数据存储和检索的专用类,这些类统称集合,集合支持堆栈、队列、列表、哈希

                                             表,集合有大量接口。在两个元素之间添加元素和简单。

           11)泛型。

                泛型就是具有占位符的类、结构、接口和方法,这些占位符是类、结构、接口和方法所存储或使用的一个或多个类型的占位符。

          12)委托与事件。

             委托是对函数的封装,可以当作给方法的特征指定一个名称。而时间则是委托的一种特殊形式,当发生有意义的事情时,事件对象处理通知的过程。

                 

                   

                  

                         

     

                        

                   

    Meet so Meet. C plusplus I-PLUS....
  • 相关阅读:
    Java中对话框的弹出
    数据格式化和ModelAttribute注解的介绍
    SpringMVC的环境搭建
    Js基础之数组
    Js基础之函数
    POJ-3208 Apocalypse Someday (数位DP)
    HDU-6148 Valley Number (数位DP)
    [SCOI2009] [BZOJ1026] windy数
    POJ-2411 Mondriann's Dream (状压DP)
    「SCOI2005」互不侵犯 (状压DP)
  • 原文地址:https://www.cnblogs.com/iplus/p/4490479.html
Copyright © 2020-2023  润新知