小东西引发的对面向对象设计思想思考

先来聊聊张孝祥老师说的那个面向对象的东西:

谁拥有数据,谁就能提供操作这些数据的方法

请分析下面例子的所有类和方法


例子1:

人在黑板上画圆

		类很简单 有 Person Blackboard circle

		想当然的认为 画圆 这个动作当然是人所拥有的

		其实不然

		画圆需要什么?

		需要的是圆的半径和圆的圆心,这两个数据是属于圆的 而不是属于人的 。

		而这是圆所具有的,所以需要用圆去操作它自己的数据,所以画圆这个动作是需要圆自己去实现的

		但是人可以去调用这个圆的方法。

例子2:

司机踩刹车

		类:司机,车

		但是踩刹车这个动作是由谁来完成的呢?再细分点 踩是有司机来完成 但是  刹车是由汽车来完成的

		司机只是调用(踩)汽车的刹车的功能。 



例子3:
两块石头磨成石刀,石刀砍树,树变成木材,木材可以做成椅子。

		首先乍眼一看 有以下几个类

		Stone

		StoneKnife

		Tree

		material 
		Chair

		分析:

		石头磨成石刀 ,石头没了变成了石刀,刚开始以为是石头类的功能,但是这里应该定义一个石头加工厂的类 StoneFactory 并在其中定义一个静态方法 MakeStoneKnife

		的方法  StoneKnife StoneFactory.MakeStoneKnife(Stone s1 ,Stone s2)

		石刀砍树,树变成木材,应该Stoneknife类中定义一个(静态方法 如果没指定用哪把刀)方法 cut  函数定义为 material Stoneknife.cut(Tree  t);

		木材可以做成椅子,木材没了,这又是一种加工厂的概念,应该定义为  Chair ChairFactory.makeChair(material m)

		综上所述:

		应该有以下类和方法


		Stone StoneFactory  StoneKnife StoneFactory.MakeStoneKnife(Stone s1 ,Stone s2)

		StoneKnife

		Tree

		material   material Stoneknife.cut(Tree  t)
		Chair Chair ChairFactory.makeChair(material m)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值