Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];

Вниз

ООП   Найти похожие ветки 

 
dmitry1991   (2009-06-12 12:32) [0]

Где ни читал пишут, что существует 5 уровней инкапсуляции:

private
protected
public
publishe

но везде описывается только четыри, а какой пятый


 
oxffff ©   (2009-06-12 12:35) [1]

модуль, сборка?


 
dmitry1991   (2009-06-12 12:37) [2]

не совсем понятно что имеете ввиду, т.к. только начал вникать в азы ооп


 
oxffff ©   (2009-06-12 12:38) [3]

Еще есть strict private, strict protected


 
Дуп   (2009-06-12 12:39) [4]


> Где ни читал пишут, что существует 5 уровней инкапсуляции:
>
>
> private
> protected
> public
> publishe

5-й где?


 
Кто б сомневался ©   (2009-06-12 12:39) [5]

еще есть strict pirvate и strict protected


 
dmitry1991   (2009-06-12 12:41) [6]


> Дуп


вот и мне интересно: где и какой


 
Alkid ©   (2009-06-12 13:38) [7]

В C# определены следующие уровни инкапсуляции:
private
protected
internal
internal protected
public


 
vuk ©   (2009-06-12 16:10) [8]

А кто-нить еще помнит об automated в Delphi? :)


 
test ©   (2009-06-12 16:52) [9]

1 private
2 protected
3 public
4 publishe

5 Bonus level

Пятый появляется только если все грабли собрал на первых 4))


 
Игорь Шевченко ©   (2009-06-12 17:37) [10]

вообще-то 3 уровня -
данные и методы, к которым имеет доступ сам класс
данные и методы, к которым имеет доступ сам класс и его наследники
данные и методы, к которым имеет доступ все остальное

Остальные уровни есть частные случаи и не имеют к ООП никакого отношения, а имеют отношение к конкретному языку.

Читайте Буча, ибо рулез


 
oxffff ©   (2009-06-12 18:25) [11]


> Игорь Шевченко ©   (12.06.09 17:37) [10]


Буч еще что то про друзей говорит.


 
Anatoly Podgoretsky ©   (2009-06-12 18:37) [12]

> dmitry1991  (12.06.2009 12:32:00)  [0]

Уровень класса, вне секций


 
oldman ©   (2009-06-12 18:42) [13]


> Anatoly Podgoretsky ©   (12.06.09 18:37) [12]
> Уровень класса, вне секций


Знаешь, почему классы высшего уровня называют "вне секций"? - Спросил Гесер
Потому, что различия в объеме инкапсуляций у них невозможно отследить - ответил я...

Почти Дозор ©


 
Игорь Шевченко ©   (2009-06-12 19:17) [14]

oxffff ©   (12.06.09 18:25) [11]


> Буч еще что то про друзей говорит.


в Delphi, в Smalltalk или где ?


 
test ©   (2009-06-12 19:41) [15]

Игорь Шевченко ©   (12.06.09 19:17) [14]
Я в Java видел друзей, видимость для проги, есть в Дельфи но не явно.


 
test ©   (2009-06-12 19:45) [16]

oxffff ©   (12.06.09 18:25) [11]
Что то я не помню у Буча про друзей, в какой книге? /*надо бы перечитать*/


 
oxffff ©   (2009-06-12 20:18) [17]


> Игорь Шевченко ©   (12.06.09 19:17) [14]


> test ©   (12.06.09 19:45) [16]


Интерфейс и реализация

Мейер [19] и Снайдерс [20] высказали идею контрактного программирования:

большие задачи надо разделить на много маленьких и перепоручить их мелким субподрядчикам. Нигде эта идея не проявляет себя так ярко, как в проектировании классов.

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

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

Мы можем разделить интерфейс класса на три части:

открытую (public) - видимую всем клиентам;
защищенную (protected) - видимую самому классу, его подклассам и друзьям (friends);
закрытую (private) - видимую только самому классу и его друзьям.


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


 
oxffff ©   (2009-06-12 20:21) [18]


> в какой книге?


в 138. :)


 
Игорь Шевченко ©   (2009-06-12 20:22) [19]

oxffff ©   (12.06.09 20:18) [17]

Лошади едят овес и сено.


 
oxffff ©   (2009-06-12 20:40) [20]


> Alkid ©   (12.06.09 13:38) [7]


А в самой .NET их 7

. The CTS supports seven different rules for accessibility:

• compiler-controlled – accessible only through the use of a definition, not a reference, hence only accessible from within a single compilation unit and under the control of the compiler.
• private: – accessible only to referents in the implementation of the exact type that defines the member.
• family – accessible to referents that support the same type (i.e., an exact type and all of the types that inherit from it).  For verifiable code (see §8.8), there is an additional requirement that can require a runtime check: the reference shall be made through an item whose exact type supports the exact type of the referent.  That is, the item whose member is being accessed shall inherit from the type performing the access.
• assembly – accessible only to referents in the same assembly that contains the implementation of the type.
• family-and-assembly – accessible only to referents that qualify for both family and assembly access.
• family-or-assembly – accessible only to referents that qualify for either family or assembly access.
• public – accessible to all referents.


 
Alkid ©   (2009-06-12 21:51) [21]


> oxffff ©   (12.06.09 20:40) [20]

А в CLOS инкапсуляции на уровне класса вообще нет :) Там есть возможность сделать только public или internal, если брать терминологию C#.

P.S.  Вообще, у меня всегда вызывают подозрения разговоры об "истинном" ООП. Однако ООП - это очень неоднозначное, амрофное понятие. Обычно, когда человек говорит об ООП, он говорит об ООП образца какого-нибудь определённого языка. Например, Smalltalk. Я слышал суждения о том, что в С++ ООП "неправильный", поскольку не такой, как в Smalltalk.


 
test ©   (2009-06-12 21:53) [22]

Alkid ©   (12.06.09 21:51) [21]
Аристотель "Категории" истенное ООП.


 
Alkid ©   (2009-06-13 00:11) [23]


> test ©   (12.06.09 21:53) [22]

Не уловил смысла твоего сообщения :)



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.008 c
2-1245271265
Zalm
2009-06-18 00:41
2009.08.16
Проблемы с DateToStr


3-1226010464
DOjD
2008-11-07 01:27
2009.08.16
Как определить происходит ли выборка данных запросом или нет?


2-1245142539
vitalik200888
2009-06-16 12:55
2009.08.16
печать из delphi.


11-1205343379
Podarok
2008-03-12 20:36
2009.08.16
Как перебрать компоненты на форме и с помощью


15-1244745720
DeadMeat
2009-06-11 22:42
2009.08.16
Чат для локалки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский