Questions tagged [ооп]

Объектно-ориентированное программирование — парадигма программирования, в которой основными концепциями являются понятия объектов и классов. Используйте эту метку для вопросов об идеях и принципах ООП, но не для вопросов, в которых ООП просто используется в коде.

Использование метки:

Для вопросов, связанных с ОПП определенного языка, нужно указывать его метку, например: , , , .

Основные принципы ООП:

  • Инкапсуляция - имеет два значения:

    • это объединение в единое целое данных и алгоритмов обработки этих данных. В рамках ООП данные называются полями объекта (свойствами), а алгоритмы - объектными методами или просто методами.
    • это ограничение доступа к полями (свойствам) или методам одних объектов к другим.
  • Наследование - есть свойство объектов порождать своих потомков. Объект-потомок автоматически наследует от родителя все поля и методы, может дополнять объекты новыми полями и перекрывать (заменять) методы родителя или дополнять их.

  • Полиморфизм - это способность одной и той же функции обрабатывать данные разных типов.

Полезные ссылки:

3938 questions
15
votes
4 answers

Что значит инкапсулировать?

Начал читать книгу о паттернах. В ней постоянно встречаются предложения типа инкапсулируйте то, что изменяется Что значит инкапсулировать ? Слово инкапсуляция я понимаю как сокрытие данных о реализации некоторых участков кода для повышения уровня…
faoxis
  • 7,738
11
votes
3 answers

Что правильнее использовать, абстрактный класс, в котором все методы абстрактные или несколько интерфейсов?

Например, есть абстрактный класс АбстрактныйАвтомобиль. У него есть 4 метода - повернутьНалево(), повернутьНаправо(), начатьДвижение(), затормозить(). Есть 3 наследника - ШевролеКруз, ШевролеЛанос и ФордМондео. Я не разбираюсь в автомобилях, но…
7
votes
5 answers

Смысл private полей и методов

Здравствуйте. Объясните, пожалуйста, смысловое назначение закрытых полей и методов в классах. Как рассуждаю я: смысл ООП, помимо прочего, в возможности расширять классы. Соответственно, когда я описываю класс, то, помня также о необходимости…
biosvs
  • 71
5
votes
2 answers

Как устанавливать отношения между классами?

Добрый день читаю Г. Буча и там рассказывается об отношениях между классами. Есть следующие виды отношений: наследование, агрегация, ассоциация, зависимости. Я понимаю как устанавливать отношения между классами с помощью наследования, но на счёт…
4
votes
2 answers

Можно ли считать HTML+CSS ООП?

Собственно вопрос в теме, добавлю скажем
,

, и т. д. - объекты #id, .class, свойства CSS - надстройки :hover, :active, :focus - события (Не говорю про js) Ну и вообще можно ли считать программированием или это разметка гипертекста,…

ferrari
  • 7,193
4
votes
1 answer

Изучение ООП студентом

При изучении ООП приходится разбираться в достаточно сложных понятиях. Чисто теоретический вопрос: Насколько глубоко начинающий программист должен знать теорию? Понятно, что основополагающие принципы он знать обязан. Наследование, Инкапсуляция,…
3
votes
3 answers

Использование приватных (private) и защищенных (protected) полей

Если с использованием публичного типа полей мне все ясно - это то, что объект может предоставить для свободного доступа и модификации, чаще всего это реализуется через геттеры-сеттеры - то разницу между приватными и защищенными я не очень понимаю,…
etki
  • 36,151
2
votes
1 answer

Изменение поведение базового класса в зависимости от свойств потомка

Задача: Есть базовый класс, который реализует какую-то общую функциональность, используемую большинством потомков. Но. Есть некоторые потомки, для которых эта общая функциональность должна быть отключена. Я вижу три варианта решения данной…
2
votes
1 answer

Как лучше отделить логику от инфтерфейса ввода-вывода

Насколько я знаю при написание приложения лучше отделять логику от инфтерфейса ввода-вывода. Т.е. делать одни классы для логики, а другие для инфтерфейса ввода-вывода. Как лучше установить взаимоотношения между этими классами? Т.е. например я пишу…
shc345
  • 855
2
votes
2 answers

Считается ли нормой наследование множество -> элемент множества?

Подскажите пожалуйста, считается ли нормой в программировании наследование по принципу множество -> элемент множества? Например, у меня есть класс "кольцо многочленов с целыми коэффициентами", и я хочу от него наследовать класс "многочлен с целыми…
2
votes
1 answer

Композиция. Взаимное существование контейнера и композируемого объекта

Из определения композиции - "включаемый (композируемый) объект может существовать только как часть контейнера. Если контейнер будет уничтожен, то и включённый объект тоже будет уничтожен. Вопрос в следующем. У нас есть класс Family в котором…
torokhkun
  • 3,575
2
votes
1 answer

стоит ли убирать геттер, если нужен только сеттер?

Если мне нужно только переустанавливать значения поля, а доступ на чтение к нему не нужен, стоит ли мне предоставить для этого поля только сеттер? Или все таки лучше создать еще и геттер "на будущее"?
2
votes
1 answer

Почему класс не может быть приватным (C#) ?

Почему класс не может быть приватным, или при каких условиях он может быть приватным ?
MAX_Vovk
  • 115
2
votes
2 answers

Вопрос по ООП. Конкретный пример.

Моделирую игровую ситуацию: Есть стол(отдельный класс), есть 4 игрока(отдельные классы, из обьекты созданы внутри класса стола) и у каждого на руках есть несколько карт. Мне нужно, чтобы каждый из игроков мог видеть какрты других и для этого я хочу…
alex91
  • 3,349
2
votes
1 answer

В чём разница между DI, DI-контейнером и сервис-локатором?

Не совсем понимаю чем конкретно отличаются эти понятия, был бы благодарен за разъяснение.
1
2 3