Принципы ООП. 1. Инкапсуляция

Sdílet
Vložit
  • čas přidán 1. 06. 2020
  • Я начинаю короткий цикл лекций об основных принципах ООП. Сегодня поговорим об инкапсуляции.
    Курсы для новичков:
    JAVA - bit.ly/2TZhIXj
    JAVA Start - bit.ly/3djP7Ua
    Инструментарий JAVA - bit.ly/2MmzIXr
    Automation QA (Java) - bit.ly/2zSb7H9
    ANDROID - bit.ly/2yWIhoM
    C#/.NET - bit.ly/2AqF4hJ
    PYTHON - bit.ly/2ZUy9Id
    FRONT-END - bit.ly/3gF0LeB
    WORDPRESS Developer - bit.ly/2ySAEQ6
    SALESFORCE Developer - bit.ly/2U0Am0P
    UI/UX дизайн - bit.ly/36RBVUj
    Project management - bit.ly/3dB0ZBz
    Обучение на проекте - bit.ly/3co4B8j
    Продвинутые курсы для состоявшихся девелоперов:
    GRASP and GoF Design patterns - bit.ly/36SngIn
    Enterprise patterns - bit.ly/2ZWc0ZV
    Сайт Foxminded: bit.ly/3dqmNPV
    Foxminded в VK:
    Foxminded в ФБ: / foxmindedco
    FoxmindEd в Instagram: / foxminded.ua
    Мой Telegram: t.me/nemchinskiyOnBusiness
    Мой блог: www.nemchinsky.me

Komentáře • 271

  • @SergeyNemchinskiy
    @SergeyNemchinskiy  Před rokem +1

    🦊Новый поток Advanced курса Enterprise Patterns стартует уже 1 февраля 2023 года ❗
    Регистрация - go.foxminded.ua/3GVhKa7

  • @bagzhansadvakassov1093
    @bagzhansadvakassov1093 Před 4 lety +335

    На собеседовании : "... определение не скажу, но Немчинский говорил что бы когда гайку открутили - жопа не отвалилась..."

    • @malikvalley
      @malikvalley Před 4 lety +42

      (Это был первый и последний вопрос) : Поздравляю! Вы приняты!
      И не смотря на то, что вы выдвигались на миддл позицию, мы дадим вам сеньйора!

    • @froloket
      @froloket Před 3 lety +8

      @@malikvalley ...ой, всмысле джуна

    • @dmitryponyatov2158
      @dmitryponyatov2158 Před 3 lety +2

      а при злостных нарушениях инкапсуляции тоже простреливает не ногу

  • @lime9603
    @lime9603 Před 4 lety +18

    Как я долго ждал от вас этого, спасибо!

  • @eugenstakhursky9604
    @eugenstakhursky9604 Před 4 lety +6

    Спасибо Сергей, хорошее объяснение!

  • @torrvic1156
    @torrvic1156 Před 4 lety +2

    Вы очень хорошо и доступно объясняете. Спасибо Сергей за труд вас и ваших коллег!

  • @antred92
    @antred92 Před 2 lety +1

    С удовольствием записался бы на ваши курсы, но проживаю и учусь в Германии. Очень часто обращаюсь к вашим лекциям по темам которые плохо усвоил на основной учебе. Спасибо за ваш канал!

  • @dmaberlin
    @dmaberlin Před rokem +1

    Уникальный контент на канале! Блогеров с таким опытом в айти не существует!) спасибо!

  • @user-hl7zj8fc7u
    @user-hl7zj8fc7u Před 4 lety +7

    Я бы сказал что уже ООоочень давно просил это видео) Ну тем не менее спасибо что раскрыли эту тему хотя бы сейчас) Слава богу что то что я понял до этого видео совпало с тем что вы рассказали (спасибо ExtremeCode)

  • @pypypy4228
    @pypypy4228 Před 4 lety +8

    Приятно вас слушать - как психотерапия :)

  • @maksonic_official
    @maksonic_official Před 4 lety +2

    Дядь, офигенный стиль подачи инфы! Благодарю!!!

  • @user-sl4wd9pv7t
    @user-sl4wd9pv7t Před 4 lety +66

    Сергей, спасибо за отличный выпуск, но я думаю было бы полезно если бы вы показали практическое применение каждой парадигмы, (пример кода) Заранее спасибо :)

  • @user-yf6wy7qq6p
    @user-yf6wy7qq6p Před 3 lety

    Спасибо. Хорошо объяснили, доступно и понятно.

  • @andreib9210
    @andreib9210 Před 4 lety +8

    Спасибо вам огромное за ваш труд! Работаю программистом самоучкой вот уже 4-5 лет но некоторые вопросы до конца понял только после того как посмотрел ваши видео. Можете записать видео про design patterns и dependency injection?

  • @its_beautiful_world
    @its_beautiful_world Před 4 lety +3

    Спасибо за видео!

  • @user-so1rr2is7b
    @user-so1rr2is7b Před 3 lety +35

    теперь в моем понимании инкапсуляция - механизм языка программирования, который позволяет объединить данные и методы, работающие с этими данными, в единый объект и скрыть детали реализации (блин где то я уже это слышал, но все равно спасибо!)

    • @princessmary5556
      @princessmary5556 Před rokem

      Ваше понимание неверное.

    • @user-so1rr2is7b
      @user-so1rr2is7b Před rokem

      @@princessmary5556 почему, а ваше какое?

    • @princessmary5556
      @princessmary5556 Před rokem

      @@user-so1rr2is7b Вы спрашиваете: *почему* Не знаю почему. Может карма у вас такая, а может мамка в детстве уронила.

    • @princessmary5556
      @princessmary5556 Před rokem

      @@user-so1rr2is7b Вы спрашиваете: *а ваше какое?* Классическое. Инкапсуляция - это изоляция деталей реализации элемента от клиентского кода.
      А вот объединение данных и методов их обработки - это концепция класса в ооп, а вовсе не инкапсуляция.
      А ещё, у инкапсуляции нет задачи что-то срывать. Например, приватный модификатор доступа в ооп отлично изолирует детали, но ничего не скрывает.

    • @denzeroneYT
      @denzeroneYT Před 9 měsíci

      В видео всё правильно, зачем ты выдумываешь велосипед, если он есть? Гений, приватный метод, он на то и создан, чтобы скрыть поля/данные от внешнего вмешательства. Я понимаю, каждый по разному говорит, но твое "изолирует" это фактически синоним к скрывает, не понимаю, в чём прикол, когда некоторые так говорят, "изоляция", это как рашка сейчас себя изолирует или же скрывает от цывилизованного мира, просто ты выбрал такое модное слово, но никто не запрещает говорить скрывать.@@princessmary5556

  • @coma4205
    @coma4205 Před 2 lety +9

    боже, вот сколько книг читал, сколько уже лекций за пол года прошел, а настолько простой и самое главное понятной и объясняющей трактовки инкапсуляции не слышал. огромное вам спасибо, теперь я хоть понимаю как отвечать на собесах на этот вопрос. правда, большое спасибо

    • @kubezubik6425
      @kubezubik6425 Před 3 měsíci

      привет) 2 года прошло, как вы написали комментарий. Хочу поинтересоваться, как сложились у вас дела с программированием, получилось ли найти работу? Если да, то что можете посоветовать, чтобы получилось попасть на работу? Заранее спасибо

    • @coma4205
      @coma4205 Před 3 měsíci

      @@kubezubik6425 Вам честно сказать?)

    • @kubezubik6425
      @kubezubik6425 Před 3 měsíci

      @@coma4205 желательно)

    • @kubezubik6425
      @kubezubik6425 Před 3 měsíci

      @@coma4205 желательно)

    • @coma4205
      @coma4205 Před 3 měsíci

      @@kubezubik6425 совет один, если планируете что либо, то не оставайтесь там где може начаться война) она все планы рушит)

  • @vladimirkulakov6126
    @vladimirkulakov6126 Před 2 lety

    Рад слышать, что инкапсуляция это не только сокрытие)

    • @denzeroneYT
      @denzeroneYT Před 9 měsíci

      Почему просто не сказать скрытие, что за "новомодное" слово? К тому же куда понятнее новичкам становиться, возможно это для тех, кто знает русский не проблема, но я это слово не знаю.

  • @vladislavkalayanov562
    @vladislavkalayanov562 Před 4 lety +265

    Вас всё ещё зовут Сергей Немчинский??????

    • @user-oo7sj1xd2q
      @user-oo7sj1xd2q Před 4 lety +57

      Имя защищено от внешних воздействий)

    • @ohonovskiy4794
      @ohonovskiy4794 Před 4 lety +39

      @@user-oo7sj1xd2q private final String name = "Sergey Nemchenskiy";

    • @dmytro1667
      @dmytro1667 Před 4 lety +1

      Я тоже в шоке

    • @qr46654
      @qr46654 Před 4 lety +5

      Использование пассивного залога... - позиция жертвы. Да, у нас так принято, но в остальном мире используют активный: My name is...; Meine Name ist....; Ich heiße ...

    • @vladislavkalayanov562
      @vladislavkalayanov562 Před 4 lety +1

      @Белояръ Чайка )))

  • @gusnitrous367
    @gusnitrous367 Před 4 lety +2

    Одно из самых адекватных объяснений в интернете.

  • @Servodroid1995
    @Servodroid1995 Před 4 lety +64

    С каждым Вашим видео я становлюсь умнее =)

  • @oleksandrvoron_ko580
    @oleksandrvoron_ko580 Před 3 lety +4

    Класна подача матеріалу простими зрозумілими словами та з практичними порівняннями)

  • @InBlackUA
    @InBlackUA Před 2 lety

    Шикарно!

  • @johnstrayk5208
    @johnstrayk5208 Před 4 lety +15

    Как только услышал ''Здравствуйте, мои дорогие" , то сразу подписался на канал.

  • @perva4ina
    @perva4ina Před 4 lety

    Спасибо за видео, добра вам

  • @ENECORG
    @ENECORG Před rokem

    Спасибо вам. Очень важная просба, из за того что некоторые люди как я работають в иностранных компаниях, нам важно чтобы вы использовали и английские имена или выражения, потому что это поможеть запонинать и вспоминать, особенно в интервю когда надо обьяснять что-то. Спасибо! Удачи :)

  • @ZEXthn
    @ZEXthn Před 3 lety

    Сергей хороший дядька 👍😀

  • @rustya2777
    @rustya2777 Před 4 lety +1

    Гайку открутили жопа отвалилась! Ты сделал мой день :-D

  • @Yuri-bc2qr
    @Yuri-bc2qr Před 3 lety +1

    Спасибо за подробное разжевывание, понятное даже для "чайников". Полезная рубрика!

  • @misterstudent3227
    @misterstudent3227 Před 4 lety

    Все понял. Спасибо!

  • @bereg2k
    @bereg2k Před 4 lety +69

    раз уж про принципы ООП заговорили, давайте заодно и SOLID разберем :) думаю, многим будет полезно.

    • @juliusmalkov9620
      @juliusmalkov9620 Před 3 lety +6

      ну если такая пьянка, то и про самые распространённые паттерны стоит поговорить)

    • @MrJustSergei
      @MrJustSergei Před 3 lety

      Что за SOLID?

  • @NightVVade
    @NightVVade Před 4 lety +1

    В тему с инкапсуляцией можно еще рассказать про рефлексию :)

  • @yurii_s_m_25
    @yurii_s_m_25 Před 4 lety +2

    Дуже дякую!!!

  • @user-gl8qs7qj4k
    @user-gl8qs7qj4k Před 3 lety +1

    блин!!! Нуууу очееннььььь здоровооо было бы, если бы, вы, автор, подкрепляли вашу теорию кодиком, так было бы веселее!!!

  • @katerina6259
    @katerina6259 Před rokem +1

    Спасибо все поняла

  • @artemky3bmu45
    @artemky3bmu45 Před 10 měsíci

    Thanks!!!

  • @max_mgtow
    @max_mgtow Před 3 lety +1

    Именно сокрытие всегда и было. Не знал другую трактовку))

  • @Sasha2dx
    @Sasha2dx Před 3 lety

    Вашим трактовкам я вращенья придавал. :D
    - воин в тёмных одеждах

  • @denizi1215
    @denizi1215 Před 3 lety

    Спасибо ,очень понятно и просто. Приятно вас слушать✌️

  • @user-vv5vt3di5l
    @user-vv5vt3di5l Před 2 lety

    Дуже дякую за пояснення ООП .

  • @sergeyshestakov4936
    @sergeyshestakov4936 Před rokem

    спасибо!

  • @AS-ci9kj
    @AS-ci9kj Před 4 lety

    очень интересно рассказываете

    • @SergeyNemchinskiy
      @SergeyNemchinskiy  Před 4 lety

      рад, что нравится)

    • @AS-ci9kj
      @AS-ci9kj Před 4 lety

      @@SergeyNemchinskiy, на самом деле ваш подход от " Адама и Евы" помогает быстрее войти в тему. Поэтому ещё раз спасибо

  • @DenisGusakov
    @DenisGusakov Před rokem +1

    Я такую аналогию придумал: представьте, на гонках вам нужно вычислять скорость машин по времени прохождения контрольного участка. И есть помощники. Один пишет на вашу доску номер болида, второй время в начале участка, а третий время в конце участка. Ваша задача посчитать. Но машины могут ехать кучно, и иногда начинается путаница: на одной строке оказывается номер одной машины, первое время от другой, а второе время от третьей. Бардак. Тогда вы придумали сделать так. Для каждой новой машины помощники заводят карточку, ну которую пишут номер, два значения времени и отдают карточку вам. Вы считаете скорость, пишете ее в специальное поле и возвращаете карточку. Теперь путаницы нет.

  • @user-ml6gm4zj2y
    @user-ml6gm4zj2y Před 4 lety +3

    У Вас ещё есть лекции по принципам ООП на канале
    Которым лет 5-6
    Смотрел с удовольствием
    Все разжевано, интересно и понятно

  • @sergiymedvynskyy8274
    @sergiymedvynskyy8274 Před 4 lety +2

    В дополнение ко всему уже сказанному моим тёзкой хотел бы добавить, что инкапсуляция это крайне важный аспект ООП. Я год работал в одной фирме, где народ долгое время игнорировал инкапсуляцию. В результате из кода вырос нелетающий макаронный монстр. В этом коде было пяток классов по 20к строк, которые были настолько сильно связаны друг с другом, что их можно было считать за один. Любое изменение в этих классах с вероятностью 80% приводило к отваливанию каких-то фитч. Единственное, что спасало, это неплохое покрытие тестами. Но и тут был зашквар, поскольку прогон всех тестов длился около часа. Это особо сильно доставало, когда надо было быстро исправить баг, потом исправление, потом исправление исправления и далее рекурсивно.
    Мораль сего опуса очевидна: инкапсулируйте свои классы во всех смыслах, о которых рассказывал автор ролика, и будет Вам счастье. Те, кто хочет ещё больше узнать о том, как пользоваться инкапсуляцией, рекомендую поискать лекции Егора Бугаенко на тему elegant objects.

    • @konstantingeist3587
      @konstantingeist3587 Před 4 lety

      Это больше похоже на то, что изначальной проблемой является не отсутствие инкапсуляции, а отсутствие разделения кода по зонам ответственности, и наличие temporal coupling. С таким же успехом проблему можно решить введением иммутабельности, но это сложнее внедрить (и понять), чем инкапсуляцию. Но введение инкапсуляции решит только часть проблем, т.к. если в коде есть temporal coupling, то она от него не спасёт никак, а это основной источник багов. И во многих проектах по факту инкапсуляция сводится к добавлению геттера/сеттера :)

  • @ilya_123__
    @ilya_123__ Před rokem

    спасибо

  • @aryamnov
    @aryamnov Před 4 lety +2

    О, качество картинки стало круче!)

  • @SBeregovoyRU
    @SBeregovoyRU Před 4 lety +3

    Вчера у меня на канале вышло видео про термины ООП. А тут и у Сергея вышло. А мне пишут: тема заезженная зачем оно надо. Надо - тут действительно много есть, что обсудить и подумать. Что касается инкапсуляции, я ее вообще не разделяю на два принципа т.к. это было бы просто странно одно без другого. Так, что тут Сергей прав: данные, методы, сокрытие - все нужно и не отделимо друг от друга.

  • @Dmitrii-Zhinzhilov
    @Dmitrii-Zhinzhilov Před 2 lety +4

    Ничего не понятно, но оооочень интересно! Благодарю!

    • @SergeyNemchinskiy
      @SergeyNemchinskiy  Před 2 lety +4

      ну тогда послушайте еще раз :)

    • @Dmitrii-Zhinzhilov
      @Dmitrii-Zhinzhilov Před 2 lety +2

      @@SergeyNemchinskiy, да, я так и делаю: сейчас прослушал на 2 раза, и через полгодика с накоплением практики, ошибок, ещё на раз, но воспринимается как в первый раз )

    • @genapak4864
      @genapak4864 Před 9 měsíci

      @@Dmitrii-Zhinzhilov коллега, вслушивайтесь во весь спектр слов сопровождающих определение, ведь именно они являются ключом к картине мира инкапсуляции, и непонимание хотя бы одного не создаст общего понимания.

  • @egorvafin1978
    @egorvafin1978 Před 2 lety

    Да. Согласен с комментаторами. SOLID было бы круто разобрать. Но в любом случае Сергею спасибо.

  • @tralivali9729
    @tralivali9729 Před 4 lety +4

    Было бы хорошо пару примерчиков каких нибудь показать еще

    • @j.d.3890
      @j.d.3890 Před 4 lety +1

      все будет зависеть от языка. В каждом инакпсуляция реализуется по-своему

  • @digbyorion4383
    @digbyorion4383 Před 11 měsíci

    РАЗ, ДВА, ТРИ !!! СЕРЁЖЕНЬКА ДАРИ !!!

  • @user-wt1tp2ff3h
    @user-wt1tp2ff3h Před 4 lety +4

    Рекомендую к просмотру всем, а не только новичкам. А то иного тех.лида спросишь - не может объяснить.

    • @homo-ergaster
      @homo-ergaster Před 4 lety +2

      В наше время каждый суслик - тех.лид.

    • @SergeyNemchinskiy
      @SergeyNemchinskiy  Před 4 lety

      спасибо за рекомендации)

  • @dantesgreen6075
    @dantesgreen6075 Před 2 lety +11

    Инкапсуляция - первая трактовка, это объединение методов и данных в один объект.
    Вторая трактовка - сокрытие внутренних данных и вызов их через методы самого объекта.

    • @denzeroneYT
      @denzeroneYT Před 9 měsíci

      Что за слово странное "сокрытие"? Якщо перекласти, то це "приховування", так наче звучить зрозуміліше.

  • @Alex11Fox
    @Alex11Fox Před 4 lety

    Инкапсуляция это - капсула!!!

  • @SuperLinuxoid
    @SuperLinuxoid Před rokem

    дякую!!!

  • @kabukijoe99
    @kabukijoe99 Před 4 lety

    Сергей, я не профессионал в программировании, но интересующийся. Если бы я послушал Ваш комент на тему инкапсуляции я бы сошел с ума, но есть книга " как программировать на visual С#" Объявление переменных экземпляров с модификатором доступа pri vate называется
    сокрытием информации (или инкапсуляцией). Когда приложение создает объект
    класса GradeBook, переменная courseName инкапсулируется ( скрывается) в объекте,
    а обращаться к ней могут только члены класса объекта

  • @digbyorion4383
    @digbyorion4383 Před 11 měsíci

    Серёжа, по ассемблеру ещё сделай пару обзоров. По 16-bit и 32-bit.

  • @mvsigor
    @mvsigor Před 4 lety +2

    гарно

  • @me_avease
    @me_avease Před 4 lety +1

    А казалось бы о чем спор. Методы, которые работают с данными, должны быть заключены с ними в одном объекте -> соответственно не должно быть методов вне объекта, взаимодействующих с данными-> соответственно данные должны быть сокрыты от внешних воздействий.

  • @19dimkin86
    @19dimkin86 Před 4 lety +1

    Музыка чуть чуть отвлекала громко немного. А так всё поделу, лайкос!

  • @dmitryr2026
    @dmitryr2026 Před rokem

    Сергей, здравствуйте! Правильно ли я понял, что можно рассмотреть как объект коробку передач автомобиля? А в качестве интерфейса взаимодействия - селектор выбора передач. Данные это обороты и мощность двигателя, а методы - передаточные числа.

  • @chimax4713
    @chimax4713 Před 4 lety +8

    Привет, от бывшего студента!
    Сергей, первая трактовка это основа ООП-парадигмы, т.е. способ оформления кода и ничего более, когда класс содержит в себе атрибуты и свойства. Но к инкапсуляции это не имеет отношение, т.к. поля можно сделать не только private. Хотя, если имеется ввиду, что класс выступает, как капсула для полей, то все равно - это не инкапсуляция с точки зрения ООП. Тогда и про локальные переменные можно сказать, что они инкапсулированы в методах, но это будет странно. Кроме того инкапсуляция действует не только по отношению к полям, но и методам, позволяя изменять внутренние методы без последствий для пользователей API.
    P.S. кстати, используя сеттеры без каких либо валидаций и проверки входных значений делает инкапсуляцию бесполезной. Обращение через сеттер к полям без проверок ничем не отличается от того, если бы эти поля были бы public и мы к ним обращались напрямую. Это, кстати, не все осознают.

    • @nanvlad
      @nanvlad Před 4 lety

      C public сеттерами полностью согласен, многие просто думают ,что если написать паблик проперти с гет/сет, то они уже юзают инкапсуляцию... а вот про инкапсуляцию локальных переменных в методах тут нет ничего странного, если посмотреть в сторону тех же замыканий

    • @alexplishkin5811
      @alexplishkin5811 Před 4 lety +1

      Есть определение инкапсуляции. Зачем в точных науках разводить феласафию?

    • @alexplishkin5811
      @alexplishkin5811 Před 4 lety

      @Svetlana V Программирование это точная наука. Точнее информатика

    • @0imax
      @0imax Před 4 lety

      @@alexplishkin5811 Программирование никогда не было точной наукой)) И сегодня - это вообще ближе к лингвистике, чем к математике и информатике)

    • @alexplishkin5811
      @alexplishkin5811 Před 4 lety

      @@0imax Пусть будет так. Но есть точное определение инкапсуляции. Не понимаю зачем разводить демагогию.

  • @internationallifeconsulting

    Очень хотелось бы почаще слушать Вас в формате ten minutes about... Удобоваримо объясняете, ёмко. О переменных бы... А вообще хотелось про VAR мнение узнать

  • @konstantinsemenov1627
    @konstantinsemenov1627 Před 3 lety +1

    Ух, сейчас понабегу :D.
    Класс - это не объект, это класс объектов. Понятие из математики ) Само собой, если сам класс не является объектом. Например функциональный объект в JavaScript также может являться и классом
    Экземпляр класса является объектом, а еще объект может существовать без отдельного класса, например простой объект:
    {
    name: 'name',
    rename(name: string) {
    this.name = name
    }
    }
    Имеет тип:
    {
    name: string;
    rename(name: string): void;
    }
    но не относится ни к одному классу кроме как к Object, к которому относятся все объект в JS. Для некоторых(python, ruby, php ...) языков это также справедливо.
    Также с помощью класса можно выразить пространство имен, например абстрактный класс со статическими методами.
    В общем я это к том что 2 определения существуют и между ними возникает путаница(как и прикол с внезапным 4-м столпом абстракцией для старичков, а еще SOLID приписывают к столпам ООП) из-за того что эти определения про разное. В первом случае это относится к определению понятия объекта и его свойств, а во втором к мышлению в стиле ООП(философия) и непосредственно к написанию кода(практика).
    Хотя с другой стороны, всё еще проще: Сокрытие - это сокрытие! :D вот это поворот
    Инкапсуляция - это размещение в оболочке.

  • @vitalyoleynikov8972
    @vitalyoleynikov8972 Před 4 lety +1

    Спасибо.
    У нас был холивар, в котором мне доказывали, что наличие сеттеров - это нарушение принципа инкапсуляции, при том что сеттер принадлежит классу, является его методом и вообще может иметь внутреннюю логику никого не смущало))).

    • @chimax4713
      @chimax4713 Před 4 lety

      Если сеттер не имеет внутренней валидации для входных аргументов, то грош цена такой инкапсулиции

    • @alexplishkin5811
      @alexplishkin5811 Před 4 lety

      Почитай про принцип Tell-Don’t-Ask

    • @homo-ergaster
      @homo-ergaster Před 4 lety +2

      Ну вообще сеттеры без валидации действительно нужны крайне редко, может в билдерах каких-то только.

    • @user-xj2xs3mz9v
      @user-xj2xs3mz9v Před 4 lety

      Да, нарушают

    • @homo-ergaster
      @homo-ergaster Před 4 lety

      @@SkyAntins Это потому, что прогеры - чудаки. У меня сеттеров почти не бывает вовсе. А при автозаполнении можно указать, генерировать сеттеры или только геттеры и для каких полей.

  • @digbyorion4383
    @digbyorion4383 Před 11 měsíci

    Серёженька ! Сделай обзор по Delphi, LAZARUS и Free Pascal.

  • @meerimbea
    @meerimbea Před 2 lety

    у меня идет экзамен по этой теме а я смотрю ваше видео

  • @Zharovskyy
    @Zharovskyy Před 4 lety +3

    ничего не понятно, но очень интересно

  • @evgnanii
    @evgnanii Před 4 lety +1

    Существует только 3 гендера так сказать. Спасибо за выпуск!

  • @EshkinKot1980
    @EshkinKot1980 Před 4 lety +2

    Спасибо, я за последний год впервые услышал на ютубе адекватное мнение на эту тему.
    Мне кажется вы упускаете один важный момент инкапсуляции как сокрытия. Инкапсуляция это не только сокрытие состояния, но и внутренней логики. Объект получает данные с диска(кэша) или через http, а клиенту этого объекта все равно откуда появился отчет, например. Это была одна из основополагающих предпосылок возникновения самого ООП - убрать реализацию с глаз долой.
    От людей, пишущих на современных языках, как-то странно слышать о том, что инкапсуляция это не сокрытие. Хочется спросить у них: "А вот модификаторы доступа какой базовый принцип реализуют?"
    С другой стороны заявление о том, что инкапсуляция это только сокрытие, звучит еще страннее. В том же самом С были структуры, и можно было реализовать сокрытие их внутреннего содержимого. Но это ни разу не делало C объектно ориентированным языком. И только объединение данных с методами позволило появится ООП в том виде, в котором мы его знаем (вернее это один из необходимых принципов).

  • @silent1um706
    @silent1um706 Před 3 lety

    Добрый день! Скажите плиз, является ли нарушением инкапсуляции случай, если я обращаюсь к полю объекта для того, чтобы узнать его значение? Например, у объекта есть булево значение ready и я обращаюсь к нему if объект.ready is True: делай что-то. Или все-таки нужно писать метод, который будет мне его возвращать?)

    • @0imax
      @0imax Před 3 lety +1

      Лучше метод isReady(), чтобы не было возможности снаружи поменять его значение.

    • @princessmary5556
      @princessmary5556 Před rokem

      Да.

  • @adminroot1345
    @adminroot1345 Před 4 lety

    Расскажите пожалуйста какие у Вас есть курсы и для чего какой нужен.

    • @annaumrykhina2540
      @annaumrykhina2540 Před 4 lety

      в описании под видео ведь есть список курсов со ссылками на сайт, где о них можно прочитать. А вас вообще какое направление интересует?

  • @typahastler8547
    @typahastler8547 Před 4 lety

    Хочется больше услышать про enterprise, почему джаву не начнут заменять? Или почему не получится написать enterprise на nodejs + nestjs(typeScript). Яндекс деньги переписали вроде, или это другой enterprise? Чем именно незаменима джава, и почем другие статически типизированные языки не могут занять нишу в создании новых enterprise проектов?

  • @digbyorion4383
    @digbyorion4383 Před 11 měsíci

    Серёжа, в Ассемблере всё сложнее с ООП. Ну, ты понял =)

  • @slavik32rus27
    @slavik32rus27 Před 3 lety

    5:33 чуть не подавился ;D

  • @user-no5vf3sy3e
    @user-no5vf3sy3e Před 3 lety

    System.out.println("вы очень хорошо объясняете");

  • @genapak4864
    @genapak4864 Před 9 měsíci

    Не толпа, а друзья Дункана МсЛауда)))

  • @vr29645
    @vr29645 Před 2 lety

    А есть ли языки в которых можно сокрыть данные? Подозреваю что данные всегда можно изменить минуя методы объекта.

  • @TwilightSun32
    @TwilightSun32 Před 3 lety

    Всё так, вполне можно придерживаться такого базового понимания инкапсуляции в языках где нет никакого ООП и получать более вменяемый код в итоге.

  • @user-mo8kc6vn9y
    @user-mo8kc6vn9y Před 4 lety +1

    Инкапсуляция реализует абстракцию. Три принципа как есть.

  • @ktyz1992
    @ktyz1992 Před 4 lety

    Сергей, а вы случайно снимаете видео не на Logitech C920?

  • @user-hz3tr9bu1h
    @user-hz3tr9bu1h Před 4 lety

    ВОПРОС - KOTLIN или что-то другое заменит JAVA в АНдроид? Ведь Java не от гугла, а от другой корпорации, уже были с этим проблемы.

    • @cover24158
      @cover24158 Před 4 lety

      заменяет же потихоньку

  • @glebbondarenko67
    @glebbondarenko67 Před 4 lety +2

    Хммм. Интересные мысли. Я и не знал что существует 2 трактовки. И что одну из них можно применить к более широкому понятию чем только Class
    Тогда вылезает проблема, что часто непонятно что является этим "классом" и какие кишки (методы, объекты) отдавать наружу и позволять другим разработчикам использовать их...
    Короче заставляет задуматься

    • @superspy2008
      @superspy2008 Před 4 lety

      ну а че там думать. Для сущности создаешь интерфейс или несколько их - те ручки, за которые кто-то извне может дергать класс. А все, что не в интерфейсе - делаешь приватным. Это как паяешь калькулятор и думаешь "а что же мне прятать в корпус, а где отверстия делать" - ну очевидно же, где

    • @superspy2008
      @superspy2008 Před 4 lety

      @Белояръ Чайка "фасад" назови.

  • @GEFEST96
    @GEFEST96 Před rokem

    посоветуйте книгу про ооп спасиба

  • @superspy2008
    @superspy2008 Před 4 lety +1

    8:36 много другой чего-чего?

  • @dmitryponyatov2158
    @dmitryponyatov2158 Před 3 lety

    а есть видосик про "новомодное" движение анти-инкапсуляции -- наоборот отделать данные от кода?
    пару раз слышал, что на собесе задавали подобные вопрос типа "в чем минусы ООП?"

    • @dmitryponyatov2158
      @dmitryponyatov2158 Před 3 lety

      косвенно к этой же теме: если ООП так круто, почему чтобы узнать про труъ-ООПшные БД приходится гуглить, и оно не используется по умолчанию в каждом чайнике?

  • @qr46654
    @qr46654 Před 4 lety +1

    Если учесть, что рефлексия сводит к нулю хоть какую-то возможность ограничения доступа ("сокрытия"), то только первое определение и есть верным

    • @gpvphoobastankvarerera6313
      @gpvphoobastankvarerera6313 Před 4 lety

      в случае использования рефлексии вообще говорить об ООП (т.е. об инкапсуляции) нет смысла т.к. рефлексия и предназначена для того, чтобы разрушить принципы ООП и обойти его основные принципы.

    • @qr46654
      @qr46654 Před 4 lety

      @@gpvphoobastankvarerera6313 рефлексия не отменяет объектов, как совокупность данных и методов, а позволяет лишь неограниченный к ним доступ. Не отменяет ни наследования, ни полиморфизма, ни абстракции

    • @princessmary5556
      @princessmary5556 Před rokem

      @@qr46654 Данные и методы их обработки - это концепция класса, а не объекта. В самом объекте нет никаких методов, только данные.

  • @jochen_ru
    @jochen_ru Před 4 lety +6

    Добрый день, товарищи. Меня зовут Сергей Немчинский, я программист 9 разряда, почётный ректор Киевского Государственного Института Программостроения и Багоисправления им. Фоксмайндедова.

  • @Misha1300
    @Misha1300 Před 3 lety

    Что из себя представляет объект? Проект? Класс? Функция? Тип данных? Переменная?

  • @gregoryianovich1467
    @gregoryianovich1467 Před 4 lety +2

    О как мило:)
    А синьорам тоже можно слушать?

  • @programer8
    @programer8 Před 4 lety +26

    На Extreme Code целые холивары по этой теме

    • @andreyvolkov3117
      @andreyvolkov3117 Před 4 lety +10

      XD. Инкапсуляция - это СОКРЫТИЕ! (XD)

    • @den_ys
      @den_ys Před 4 lety +1

      @@andreyvolkov3117 I hate you!))

    • @Alex11Fox
      @Alex11Fox Před 4 lety +3

      Маслята и Питихон

    • @gustaugutter9477
      @gustaugutter9477 Před 4 lety +1

      инкастыляция

    • @EshkinKot1980
      @EshkinKot1980 Před 4 lety +7

      А что там еще делать, кроме как холиварить? Вопросы они порой интересные поднимает, но их категоричность, порой вызывает заставляет усомниться в компетентности автора. Я после очередного бреда отписался от них. Обидно не то, что они поленились разобраться, а то что их слушает огромное количество новичков, и они тупо засирают им головы.

  • @gorjulhakyan4221
    @gorjulhakyan4221 Před 2 lety

    Если знакомы с Angular/Angular Material, то хотя бы раз должны были встретится со второй трактовкой инкапсуляции, которую привел автор

  • @user-hm4ok3kn1h
    @user-hm4ok3kn1h Před 4 lety +2

    сайд эффект? как интересно.... (а что это такое? :)

  • @user-iq2ic3mh9z
    @user-iq2ic3mh9z Před 4 lety

    Сергей, спасибо большое за ваши познавательные видео!
    Хотел отметить маленькую опечатку в описании, можете исправить: "поговорим ОБ инкапсуляции" (всем плевать, конечно, но всё же))).

  • @kosatchev
    @kosatchev Před 4 lety +1

    Насколько мне известно, абстракция - это принцип любого программирования.
    Сложно представить процедурный или функциональный подход без переменных и функций (абстракций?)

    • @user-wt1tp2ff3h
      @user-wt1tp2ff3h Před 4 lety

      А абстракция - это переменные и функции? :D Абстрагированные от класса что ли? или как?))

    • @kosatchev
      @kosatchev Před 4 lety +1

      @@user-wt1tp2ff3h в широком смысле, абстракция это теоретическое обобщение. так что ответ на ваш вопрос - да.
      Переменная это абстракция над конкретными значениями, а функция - над конкретными алгоритмами.

    • @user-wt1tp2ff3h
      @user-wt1tp2ff3h Před 4 lety

      Дмитрий Косачёв уж очень широкий смысл. Можно бесконечно подниматься по уровням абстракции. И таким же образом увеличить количество принципов ООП.

    • @user-um6fj1us4c
      @user-um6fj1us4c Před 4 lety +1

      @Дмитрий Косачёв, Согласен, только уточню, что абстракция лежит на более фундаментальном уровне, нежели программирование. Это из области формальной логики, и одинаково используется во множестве дисциплин. Как по мне, абстракция - это лучший инструмент для борьбы со сложностью систем. Поэтому, конечно, это не эксклюзивная особенность ООП. Просто в случае ООП многие создают классы, исходя из сиюминутной выгоды (программирование по принципу: "Велика у стула ножка, подпилю её немножко"), а не исходя из абстрагирования предметной области (тогда бы классы гораздо чаще получались логически-объяснимыми и легко понимаемыми).

    • @kosatchev
      @kosatchev Před 4 lety

      ​@@user-wt1tp2ff3h Об этом я и говорю. И именно поэтому не стоит называть абстракцию как принцип ООП.

  • @danilochagov8418
    @danilochagov8418 Před 4 lety +5

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

  • @sh1ki17
    @sh1ki17 Před 3 lety

    сокрытие это сокрытие, а инкапсуляция это инкапсуляция. Сразу все понятно о ваших курсах)

  • @dantesgreen6075
    @dantesgreen6075 Před 2 lety

    1:19 определение

  • @ladazakharkina5865
    @ladazakharkina5865 Před 2 lety

    В немецком учебнике тоже две трактовки

  • @digbyorion4383
    @digbyorion4383 Před 11 měsíci

    Ну, в GUI - Да ! Ну, некоторые свой GUI разрабатыают. Например, в JAVA.