面向对象思考问题的方法
我学了C语言,他是面向过程的。
我在学习面向对象时,发现和面向过程思考问题很多地方不一样,考虑现实中的问题。
请大家说一下你们是怎么思考面向对象的问题。
谢谢大家
翔鹤级正规空母
9 years, 5 months ago
Answers
C是面向过程的语言,在代码中定义的方法一般是一直调用;而在面向对象的语言(如Java)或基于面向对象的语言(如JavaScript),方法都定义在对象上或者类上(ps:js中对类并没有明确的说法)。譬如,有一个比较大小的方法:
在C语言中:
int compare(int num1,int num2){
return num1>num2?num1:num2;
}
//调用
compare(1,2);
在Java中
public class Compare{
private int num1;
private int num2;
public Compare(int num3,int num3){
this.num1=num3;
this.num2=num4;
}
public int com(){
return this.num1>this.num2?this.num1:this.num2;
}
}
//调用
Compare cpm = new Compare(5,6);
System.out.println(cpm.com());
上面一个简单的示例,是为了区分一下面向过程和面向对象针对同一个问题的不同思维方式。虽然这里看不出面向对象的突出点,但是在实际项目中,方法是非常多的,有很大的编码量。在这种情况下,类就能很好的对代码进行组织,譬如一个用户有吃饭、走路、睡觉、娱乐等不同行为。
在C语言中,实现可能是这样的:
void eating(){}
void walk(){}
void sleep(){}
void entertainment(){}
.......//定义其它方法
而在面向对象的语言中,实现可能是这样的:
public User{
void eating(){}
void walk(){}
void sleep(){}
void entertainment(){}
....//其它方法
}
很明显,面向对象对代码结构进行了很好的组装,让人更容易理解。酷壳有一篇关于理解面向对象的文章:
如此理解面向对象编程
,希望对题主理解面向对象有帮助
魔法电磁炮
answered 9 years, 5 months ago