2

Ты наверняка помнишь, что такое «абстракция» — мы это уже проходили. Если вдруг подзабыл — не страшно, вспомним: это принцип ООП, согласно которому при проектировании классов и создании объектов необходимо выделять только главные свойства сущности, и отбрасывать второстепенные.

Как понять выделять только главные свойства сущности, и отбрасывать второстепенные? Объясните пожалуйста, а то я пропустил по состоянию здоровья лекцию :(

tCode
  • 3,586
  • Спасибо что отредактировали :) –  Apr 25 '19 at 13:36
  • Наверное те свойства сущности, которые имеют значение для текущей задачи - отбрасывая все ненужное. – dSH Apr 25 '19 at 13:42
  • Допустим, вы пишете программу, которая ведёт базу студентов в группе. Для целей данной программы имя студента, его оценки и посещаемость занятий - важные свойства и их нужно учесть при написании программы. А вот то, что у студентки Маши третий размер груди и она носит откровенные наряды - второстепенные свойства, и при написании программы их нужно отбросить. – Xander Apr 25 '19 at 13:51
  • @Xander ну это смотря для чего база создается, возможно и наоборот – dSH Apr 25 '19 at 14:04
  • А вот вы же этот вопрос задавали пару дней назад: https://ru.stackoverflow.com/questions/972730/Абстракция-и-моё-понимание/972928

    Вам там даже ответили несколько человек.

    – Mark Shevchenko Apr 25 '19 at 14:16
  • да я вот тоже хотел сказать что недавно писал ответ на эту тему Вам https://ru.stackoverflow.com/a/974485/188366 – Stranger in the Q Apr 25 '19 at 14:38
  • @StrangerintheQ да я помню, просто мне надо разобраться именно с этими предложениями –  Apr 25 '19 at 14:42
  • @MikeMclaren как раз определение принадлежности свойства уровню абстракции это часто нетривиальная задача, поэтому есть хорошие абстракции и откровенно плохие. – Stranger in the Q Apr 25 '19 at 14:44
  • @MikeMclaren вы задавайте дополнительные вопросы, не стесняйтесь – Stranger in the Q Apr 25 '19 at 14:52
  • @StrangerintheQ выделять только главные свойства сущности, и отбрасывать второстепенные. Не пойму этих слов, это можно на примере расписать или объяснить, а то я читаю, а толку 0, не могу достучаться до мозга :) –  Apr 25 '19 at 15:02
  • @MikeMclaren вот возьмем сетевой маршрутизатор, он принимает пакеты по сети, но они не интересуют его в полном объеме, маршрутизатору важно понять куда отправить пакет и все, вот внутри маршрутизатора сущность, описывающая пакет будет иметь только те поля, которые нужны для обработки этого пакета, допустим адрес получателя и время жизни. – Stranger in the Q Apr 25 '19 at 15:22
  • Абстрактные классы содержат абстрактные методы, а не свойства. См. https://ru.stackoverflow.com/a/818624/204920 – Roman C Apr 25 '19 at 20:16

1 Answers1

1

Главные свойства выделять очень просто. Это те свойства, которые нужны для конкретной бизнес-логики (т.е. для конкретного приложения). Вот, к примеру, человеское существо. Это сложнейший объект характеризующийся тысячами параметров начиная от его пола, психологических характеристик, внешности и финансового состояния и заканчивая параметрами состояния здоровья, молекулярным строением тканей и химическим составом крови. Но если для приложения требуется только его имя и пол, то мы не тянем в приложение описание человека из предметной области во всей его полноте и сложности. Человек для нас - это только name и gender. Это и есть абстракция.

pazukdev
  • 575