从零开始学Java(二)基础概念——什么是"面向对象编程"?

时间:2023-02-15 14:19:12

1、理解“概念”
概念是把具有相同特点的事物分成一类,并概括式的命名。
例如:
水果:富含水分口感甜的植物果实。
桌子:上方有平面,下方是空的,四个桌腿,高度适合人类坐下活动。
家具:家庭生活中使用的大件器具,沿袭了古代木制大件家用器具的种类。
厨具:在厨房做饭时用到的相关器具。
老虎:大型猫科动物,毛色浅黄或棕黄色,满有黑色横纹;头圆、耳短,耳背面黑色,*有一白斑甚显著;四肢健壮有力;尾粗长,具黑色环纹,尾端黑色。

所有的非专有名词都是概念,概念这个名词本身也是概念。

2、概念可以定义事物的关系,但关系的发生需要具体事物

比如我想下班买点水果。这时我和具体那个水果没有联系,但却能定义我和水果的关系,我要买水果。
下班路上看到有桃子很想吃,于是就买了三个。这时我和这三个桃子A、B、C 就产生真实的联系了,买水果这件事真实发生了。
同时隐含的还有卖水果的人以及交易的现金。

3、用概念描述关系

面向对象编程不如说成是面向概念编程,先在编程中用概念定义事物之间的联系。
通常支持面向对象特性的语言中对于概念的表现方式是class(即类型)
定义的类型不能够直接使用,必须使用new 关键字 new出具体的某个事物才能够使用。

上文中的“我”是具体的某个事物了所以要用概念来表示,可以用“顾客”这个概念定义一个类型class顾客。
然后是“水果”定义一个类型class水果。
定义一个类型class水果店。

这三个概念(对象)可以描述清楚一次购买水果的活动。

顾客掏钱从水果店买了三个桃子。

4、找出关键属性和方法

属性

顾客:顾客身上没钱就买不了东西,有钱也得看够不够。所以钱是一个关键属性。买到拿水果时得有个口袋吧。有口袋这个属性。

水果店:水果店没有东西卖就无法完成卖水果这个活动,所有水果店有多少水果库存是关键属性。也有钱这个属性。

水果:没有单价就无法买卖,单价是关键属性。

顾客的口袋和水果店的库存也是隐含的概念(对象)。

方法

顾客:付钱——钱属性减少 收货——口袋里增加水果

水果店:收钱——钱属性增加 供货——库存减少

水果:没啥招天生被吃的命T_T。