白话编程---面向对象(1)初识类

前言

        怎样做类

引入

        从面向过程到面向对象,需要有个适应的过程.

        面向过程注重的是怎样实现目的,即逻辑的具体化,数据化.

        面向对象在意的是设计,怎样建立合理的产品结构.

        两者本质上没有区别,最后编译完都是0和1

        面向对象的三大特征:继承,封装和多态. 目的只有1个:代码重用,适合大型程序的编写.而这三大特征都是以类的形式出现的.

面向过程和面向对象的比喻

        打个比方:你想粉刷墙壁,你可能会做以下事情:

       1> 网上搜索刷墙的教程,买腻子粉,买油漆,先刮腻子粉,再用油漆调色,最后上漆.-----这是事必躬亲,每一步都自己把握,这是面向过程,这是C语言的设计思想

        2>你找个漆匠给你刷墙----这是面向对象.并且是"纯面向对象",这是Java的设计思想

        3>你自己也会刷墙,你培训了漆匠给你刷,关键部分亲自出马---这是面向对象,这是C++设计思想

        经此一对比,面向对象的优劣就出来了. 面向过程的语言编程困难,但效率高,发挥空间大;面向对象的编程相对简单,但你可能根本不知道发生了什么,按部就班就行了,根本不需要知道到底发生了什么.C++兼具了两者优点,C++的语法繁琐是公认的,语言只是工具,选择适合自己的部分使用,能达到目的就行了.部分内容比如多重继承,私有继承可以选择学习.

         类的概念类似于"分门别类"里的"类". 表示事物的种类.

        有时候感觉太熟悉的东西反而不好去做定义.对"类"的理解,可以想这句话:

        同类事物拥有同样的特征,不同类的事物有不同特征.以 "特征"区分不同类.

         在面向对象概念里,"对象"是上面的"漆匠",表示可以做某些事的人.漆匠类表示漆匠的模板.类是对象的模板

类的内容

        属性和方法. 通常属性声明为private, 方法视情况用public或者protect,表明继承关系可用或公开.方法可以用private修饰,但意义不大.

        抽象基类只有虚方法,且不能生成对象,和Java的抽象类概念一致.可以在抽象基类中添加属性

类的分类

        笔者将类分为两大体系: 资源类体系能动类体系.

        资源类体系里的类有 资源类,适配器类,效果类.

        能动类体系里的类有 数据类,,动作类.

        两者区别在于:能动类类体系里的数据类定义了动作,动作类里传入数据类引用.

                                资源类体系里的资源类没有动作,只能被操作从而实现效果. 

        举例:能动类系列---数据类,定义了动作:刷墙        

class Painter{                                //漆匠类定义
    private:
        string name;
        int age;
        int height;
    public:
        Painter(string na,int ag,int he);      //构造函数   
        void paint();                          //刷墙
    }

           非操作类系列---动作类,引入漆匠引用

class Paint{                                    //刷漆类定义
    private:
        &Painter painter;
    public:
        Paint(&painter pa);                    //构造函数,把漆匠找来   
        void paint(){painter.paint};           //刷墙,调用漆匠自己的动作
    }

说明:似乎有些麻烦,但这样定义的好处是方便接口使用.

       资源类体系的类定义,稍微麻烦一点,将在下一话说明.在做图像的程序中用得比较多

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jllws1

你的鼓励是我创作的动力,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值