@lutokris

Правильно ли я понимаю ООП?

Всем добра. Допустим мне нужно создать программу для учета живности на ферме. Куры, коровы, быки, лошади, поросята. Я правильно понимаю у меня будет родительский класс для всех с названием Животное и с параметрами(дата рождения, пол, вес, дата смерти). От него будут подчиненные классы -
КРС(крупный рогатый скот) и у него будут параметры - сколько молока дает)
Куры с параметрами - сколько яиц дает
Лошади - сколько молока дает
Поросята - тут даж не знаю.
В общем я запутался, вроде бы можно всего лишь создать один класс Животное с параметрами др, пол, вес, дата смерти и еще к нем добавить атрибуты количество молока, яиц и не заморачиваться созданием субклассов. В общем я запутался( наверное не ферме не стоит применять ООП?) собаки тож есть, но их доить вроде не будем и мяса не дают они(
  • Вопрос задан
  • 287 просмотров
Решения вопроса 2
@gazievDima
Android Developer
Исходя из задания которое ты написал, а именно (хранение/получение информации) то есть, тебе нужно просто хранить данные, достаточно использовать коллекции для этого, ты можешь хранить животных в списке как объекты, а можешь просто как элементы. В дальнейшем если тебе понадобиться добавить методы животным, то ты без проблем это сможешь сделать. Тут можно остановиться на простой иерархии. Dogs extends Animal, Cat extends Animal, etc..
Ответ написан
В общем и целом, ООП держится на 3 китах: инкапсуляция, полиморфизм, наследование.
Тут согласен с некоторыми на счет, что ООП хорошо будет для создания мини игры про ферму.
Создаем базовый класс животные. Наследуемые классы корова, свинья и т.д. Это будет проявлением наследования. Причем наследование м/б разное в зависимости от уровня доступа данных.
Как тут кто-то написал "сделаете в базовом классе методы типа «гулять», «давать урожай», «подавать голос» и прочее, а реализацию сделаете разную у каждого." Это будет полиморфизм.

Ну а инкапсуляция это такая вещь, тут в двух словах не опишешь. В общем и целом, защита информации. Когда к данным есть доступ в самом классе, или через методы описанные в классе. То есть вне класса напрямую нельзя обращаться к данным.

Это мое понимание. Возможно оно различается с пониманием людей, у которых больше опыт.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@mkone112
Начинающий питонист.
Любая аналогия имеет границы, хочешь в ооп? Напиши любую фиговину в структурном стиле, а потом начни ее развивать. Когда перестанешь понимать что ты вообще пишешь, и плодить баги быстрее чем фиксить - начнешь понимать методы управления сложностью(включая ооп), или не начнешь...
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега C++
software engineer
Лошади - сколько молока дает

В общем я запутался


Это точно.
Ты сейчас разбираешь структуры данных, а ООП это больше про методы и инкапсуляцию.
Чтобы делать учет животных вообще не обязательно для них класс делать, храни все в базе, учет веди sql запросами, например.

P.S.
собаки тож есть, но их доить вроде не будем и мяса не дают они(

Смотря из какой ты страны..
Ответ написан
Комментировать
@vanyamba-electronics
class Animal;
class Pig : public Animal;
class Horse : public Animal;
...
Ответ написан
Комментировать
@Vitsliputsli
ООП применимо в любой задаче, и да, в очень простых задачах оно может быть избыточно. Объекты ООП имеют мало отношения к реальному миру, это чисто техническая реализация, соответственно исходить нужно из технических требований в первую очередь, а не из биологической классификации видов.
Из вопроса абсолютно не ясно, каковы требования. Вполне возможно что вам достаточно объектов учета, каждый объект это как строчка в книге учета. В зависимости от использования, возможно понадобятся объекты ресурсы даваемые объектами учета. Но все это зависит от предъявляемых требований.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы