Задать вопрос
@lutokris

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

Всем добра. Допустим мне нужно создать программу для учета живности на ферме. Куры, коровы, быки, лошади, поросята. Я правильно понимаю у меня будет родительский класс для всех с названием Животное и с параметрами(дата рождения, пол, вес, дата смерти). От него будут подчиненные классы -
КРС(крупный рогатый скот) и у него будут параметры - сколько молока дает)
Куры с параметрами - сколько яиц дает
Лошади - сколько молока дает
Поросята - тут даж не знаю.
В общем я запутался, вроде бы можно всего лишь создать один класс Животное с параметрами др, пол, вес, дата смерти и еще к нем добавить атрибуты количество молока, яиц и не заморачиваться созданием субклассов. В общем я запутался( наверное не ферме не стоит применять ООП?) собаки тож есть, но их доить вроде не будем и мяса не дают они(
  • Вопрос задан
  • 288 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 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
ООП применимо в любой задаче, и да, в очень простых задачах оно может быть избыточно. Объекты ООП имеют мало отношения к реальному миру, это чисто техническая реализация, соответственно исходить нужно из технических требований в первую очередь, а не из биологической классификации видов.
Из вопроса абсолютно не ясно, каковы требования. Вполне возможно что вам достаточно объектов учета, каждый объект это как строчка в книге учета. В зависимости от использования, возможно понадобятся объекты ресурсы даваемые объектами учета. Но все это зависит от предъявляемых требований.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы