面向过程向面向对象转变

       昨天晚上就关于类方法之间独立性(开始我是这么认为的)的问题和白Sir进行了一场争论。

       问题的起因是这样的,我们作业里模拟一个税务局收税系统,其中我建了一个个人所得税类来提供个人所得税的相关计算问题。其中有一个计算税收的方法,通过纳税人提供的收入额和收入类型来确定使用的税收计算方法并计算纳税额。

/**

     * 计算个人应缴纳税额的方法

     * <p>根据传入收入类型和收入进行运算</p>

     *

     * @param dIncome 收入

     * @return 应缴纳税额

     */

    public double countTax (double dIncome){

       double tax = 0;

       /**

        * 判断收入类型

        * <p>根据类型调用不同税收计算方法</p>

        */

       switch(nIncomeType){

       case 1:

           tax = taxOfType1(dIncome);

           break;

       case 2:

           tax = taxOfType2(dIncome);

           break;

       case 3:

           tax = taxOfType2(dIncome);

           break;

       case 4:

           tax = taxOfType3(dIncome);

           break;

       default:

           System.out.println("目前版本未实现该种类型税收计算");

       }

       return tax;

    }

开始时我想过通过带参构造方法里来初始化该类的对象,直接通过对象调用该方法返回纳税金额。但是后来我就提出了方法之间独立的问题,其实这是上一道交警处理违章那道题里来的那道题里的一个方法多次调用了该类的别的方法。自己感觉就是方法之间的依赖度很高,存在一个方法修改对别的方法影响很大的感觉。

当时白Sir的回答是这样的:没有这种说法,串联还是不串联,你思考的方向错了,我们写方法肯定是跟业务有关,而且方法要尽量的做到高类聚,怎么高类聚,该分离的分离,该公用的公用,然后根据我的需要去调用方法就行了。

当时我就感到很糊涂,感觉自己心里面的问题没有得到很好的解决。然后就模模糊糊的把代码敲完了,就是我上面贴出来的方法。

结果今天早上等自己清醒了反过来看自己的代码,我才真正发现问题的所在。才发现自己所要表达的并不是什么方法独立性什么的问题。而是从面向过程向面向对象转变的阵痛!

我以前学的是CC++ Java虽然我大三提前选课选了,也学了,但是大学里大多数时间还是用的CC++。所以面向过程的思想对自己影响很深。

昨天那道题,我其实想表达的是那种面向对象的写方法的感觉,我想的是也可以叫方法“独立”的问题,但不是那种什么方法里使用方法那种串联不对什么的。而是我自己认为的面向对象编程思想中方法“独立”的问题,面向对象编程中当我们在写一个类的方法时,它就只是这个类的一种行为,是独立于别的将要调用它的类的。我们在写这个类的方法时,他只是作为这个类的一种行为,当他需要某些参数时,这个类里没有,那么我们就通过参数列表传进来,而不是考虑什么别的类调用它时,已经对哪个什么属性初始化了,然后又要同时调用一个另一个通过这个属性来的得到的方法什么的。这种考虑关心别人对他的使用而写程序的方法其实不正是面向过程了吗?

所以昨天开始时,自己的那种矛盾的感觉其实就是自己已经通过thinkinginjava这本书的学习,练习,自己已经逐步找到了面向对象编程的感觉,所以昨天那道题自己不自觉的想要用面向过程的方法写的时候,自己虽然不知道哪儿出了问题,但是写代码的感觉就是很别扭。

这正说明了自己在不知不觉中,开始习惯了面向对象的一些方法。^0^所以对于上面贴上去的代码,我要说NO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值