Я пытаюсь обвести голову объектно-ориентированным программированием.
Я понимаю, что у нас есть объекты, поэтому мы можем проектировать наши программы для зеркального отображения реальных объектов.
Возьмем иерархию классов:
class Fruit {
void Eat() {
}
}
class Apple extends Fruit {
}
Очевидно, что вы можете использовать Fruit полиморфно, если Eat()
является виртуальным. Но имеет ли это смысл? Фрукты не могут съесть себя!
Если объект фрукта скорее передается человеческому объекту, который имеет функцию Eat()
?
Я пытаюсь выяснить правильный способ подумать об этом. Насколько тесно, в общем, должны ли объекты программирования зеркально отображать объекты реальной жизни?