sdf*_*asd 11 oop class function
我确实知道诸如变量和函数作用域之类的一些优点,但除此之外我似乎更容易拥有函数组而不是拥有许多类的实例和抽象.那么为什么在一个类中将类似函数分组的"规范"呢?
evi*_*one 14
简单的非OOP程序可能是一长串命令.更复杂的程序将命令列表分组为函数或子例程,每个函数或子例程可执行特定任务.对于这种类型的设计,通常可以从程序的任何部分访问程序的数据.随着程序规模的扩大,允许任何功能修改任何数据意味着错误可以产生广泛的影响.
相反,面向对象的方法鼓励程序员将数据放置在程序其余部分无法直接访问的位置.相反,通过调用特殊编写的函数来访问数据,这些函数通常称为方法,它们与数据捆绑在一起或从"类对象"继承,并充当检索或修改这些数据的中介.将数据与用于访问和管理这些数据的一组方法组合在一起的编程结构称为对象.
OOP编程的优点:
Jak*_*icz 13
OOP的要点不是"在一个类中对类似的函数进行分组".如果这就是你所做的一切,那么你就不会做OOP(尽管使用的是OO语言).使用类而不仅仅是一堆函数会产生"变量和函数范围"的副作用,但我认为它只是副作用.
OOP涉及封装,继承,多态,抽象等许多概念.它是软件设计的一种特定方式,是将问题映射到软件解决方案的特定方式.
主要原因是您可以更紧密地将行为与数据相关联.
考虑以下:
class CoffeePot {
private float waterOunces;
private float coffeeOunces;
private int scoopsOfCoffee;
private boolean filterClean;
void make() {
coffeeOunces += waterOunces;
waterOunces = 0;
filterClean = false;
}
void fill(int water) {
waterOunces += water;
}
}
Run Code Online (Sandbox Code Playgroud)
现在你可以拥有一个CoffeePot对象并随心所欲地做任何事情.传递它,扩展它的行为,任何东西.行为保持在对象内.你不能做任何事情.
class MagicCoffeePot extends CoffeePot {
@Override
void make() {
// magic coffee pot makes MORE coffee
coffeeOunces += waterOunces;
super.make();
}
}
Run Code Online (Sandbox Code Playgroud)