|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.11.2011, 21:19 | #11 |
Пользователь
Регистрация: 23.11.2011
Сообщений: 20
|
Всё-равно не понял, каким образом можно использовать код неправильно.
|
23.11.2011, 23:50 | #12 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,964
|
Цитата:
Никто и ничто не мешает Вам лично изменить что-то в любом классе, но если над проектом работает 20 - 100 человек, никто не будет разбираться в реализации каждого класса отдельно, а должен получить то, что желает. Например. Мне дали задание - написать класс который должен делать то-то и то-то. У него должны быть такие-то функции, с такими-то и такими-то входными и выходными параметрами. Допустим две функции выдающие значение в виде double и входные в виде double и int. Для реализации этих двух функций, к примеру, мне требуется 10 вспомогательных функций, 5 массивов и 20 переменных. Если сделать всё это видимым для конечного пользователя, представьте себе его ужас, когда он откроет этот класс. Ему придётся долго и нудно объясня, что вот этой и этой функцией пользоваться нельзя, а эта переменная может взорать комп. Но, скрыв это всё от лишних глаз, мы щадим, прежде всего конечного пользователя. Геттеры и сеттеры используют "продвинутые" программисты, которые точно знают, чего они хотят получить в данном классе, но не хотят менять его исходный код.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 23.11.2011 в 23:52. |
|
24.11.2011, 00:12 | #13 |
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
|
По поводу интерфейса:
Интерфейс - это не только интерфейс пользователя (GUI), не только окошки, кнопочки и т.п. GUI - это частный случай этого понятия. Программа предоставляет пользователю интерфейс, через который он может с ней взаимодействовать (вводить данные, видить сообщения в окошках и т.п.) Интерфейс класса - это то, что что этот класс позволяет делать с собой пользователю. В этом случае пользователем класса выстапает программист ну или какой-то код. Класс позволяет пользователю вводить/выводить какие-то данные (get/set ф-ии), или позволяет выполнять надо собой какие-то команды (прочие ф-ии класса). Вот все, что в классе публичное - это интерфейс этого класса. |
24.11.2011, 00:41 | #14 | |
Пользователь
Регистрация: 23.11.2011
Сообщений: 20
|
Цитата:
|
|
24.11.2011, 13:18 | #15 |
Старожил
Регистрация: 04.02.2009
Сообщений: 18,136
|
Под конечным пользователем он имеет ввиду другого программиста. Того кто будет пользоваться Вашим кодом. Например, Вы сами через год. Вкратце, также как и пример с двигателем внутреннего сгорания - Вы знаете как к примеру работает современный плазменный телевизор? Какие частоты использует пульт дистанционного управления? Однако, Вам это абсолютно не мешает переключать каналы, пользоваться спутниковым телевидением, телетекстом и пр. Смысл ясен? Вы не проходите в школе кучу всяких дополнительных предметов - только основы. А интерфейс уже построен так, чтобы Вы могли только жать кнопки не задумываюсь о процессоре, обрабатывающем сигнал, блоке питания и пр.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 24.11.2011 в 13:23. |
24.11.2011, 13:55 | #16 | |
Участник клуба
Регистрация: 04.04.2010
Сообщений: 1,554
|
Furchtlos
Цитата:
1. sender.sendMessage(); 2. sender.sendMessage(); В первой класс Sender, инкапсулирует в себе всё необходимое ему для работы. То есть, я возьму этот класс и скопипащу в другую программу и метод sendMessage() у меня будет работать. А во втором случае абстракция выглядит точно так же. Но этот класс не инкапсулирует в себе адресную книгу, которая нужна ему для работы этого метода, а скажем, берёт её из какого-нибудь статического метода, или связан с ней по типу сигнал-слот. И вот если я этот класс скопипащу в другую программу, этот метод у меня работать не будет, тогда говорят, что принцип инкапсуляции при этом нарушается, потому что абстракция не инкапсулирует своё поведение. Тоесть для повторного использования нужно, и для простоты. |
|
24.11.2011, 16:49 | #17 |
Пользователь
Регистрация: 23.11.2011
Сообщений: 20
|
Т.е инкапсуляция и сокрытие это разные вещи? Инкапсуляция обеспечивает сокрытие? Тогда что именно делает сама инкапсуляция? Каким образом она "объединяет код и данные"? Т.е чтобы я например через год смог воспользоваться каким-либо классом, мне не нужно было изучать его работу? Чтобы в списке методов не было лишних? Или полей. Т.е были видны только те вещи, которые мне нужны для использования этого класса. Но тогда преимущество чисто в удобстве? И то оно пока что мне настолько ясным не кажется.
|
24.11.2011, 17:18 | #18 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 18,136
|
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
|
24.11.2011, 19:35 | #19 | |
Участник клуба
Регистрация: 04.04.2010
Сообщений: 1,554
|
Utkin
Цитата:
Например, если функция манипулирует чем то, за своими пределами, то у неё фиговая инкапсуляция, и без этих внешних значений функция работать не будет. А какая-нибудь библиотечная функция вычисления синуса, все свои вычислительные механизмы инкапсулирует в себе, и её можно спокойно использовать в любом окружении. |
|
24.11.2011, 20:26 | #20 |
Пользователь
Регистрация: 23.11.2011
Сообщений: 20
|
Спасибо большое! Теперь чуть более понятно.
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Негативные анекдоты про Россию и про всё в ней происходящее... Ваше мнение? | Вадим Мошев | Свободное общение | 16 | 26.09.2011 08:02 |
.net c# про инкапсуляцию | flcl | Помощь студентам | 2 | 24.02.2011 11:42 |
[Turbo Pascal] - задачи про подбрасывание монеты и про определение истины. | Sent Tools | Помощь студентам | 10 | 28.10.2010 18:11 |
Вопрос про Свойство Visible и про иконки в imagelist | Kappi4 | Компоненты Delphi | 2 | 21.05.2010 13:10 |
У меня вопрос про базы данных,а точнее про таблицы!!! | Alexij | Общие вопросы Delphi | 1 | 13.04.2008 23:24 |