Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
29 / 31 / 2
Регистрация: 14.04.2012
Сообщений: 152
1

В чем заключается принцип инкапсуляции

14.04.2012, 21:02. Показов 1244. Ответов 2
Метки нет (Все метки)

Доброго времени суток, изучаю Си шарп по Шилдту,столкнулся с проблемой,абсолютного непонимания кода.
Насколько я понял,рефлексия-это средство для получения информации о типе данных с помощью классов,методов,свойств из пространства имен Reflection.
Итак,подтема - Получение сведений о методах.
И тут нам приводится MethodInfo[] GetMethods() - массив и метод//ну уж совсем неясно
После чего пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System; 
using System.Reflection; 
class MyClass { 
int x; 
int y; 
public MyClass(int i, int j) { 
x = i; 
У = j; 
} 
public int Sum() { 
return x+y; 
} 
public bool IsBetween(int i) { 
if(x < i && i < y) return true; 
else return false; 
public void Set(int a, int b) { 
x = a; 
У = b; - 
} 
public void Set(double a, double b) { 
x = (int) a; 
у = (int) b; 
} 
public void Show() { 
Console.WriteLine(" x: {0}, y: {1}", x, y); 
} 
} //[COLOR="Red"]до отсюда все ясно[/COLOR]
class ReflectDemo { 
static void Main() { 
Type t = typeof(MyClass); // получить объект класса Type представляющий класс MyClass , [COLOR="red"]//до этого я познакомился с typeof и насколько я знаю он служит для вывода инфомации [/COLOR]
 
Console.WriteLine("Анализ методов, определенных " + 
"в классе " + t.Name);[COLOR="red"] //как я понимаю свойство из пространства имен Type[/COLOR]
Console.WriteLine() ; 
Console.WriteLine("Поддерживаемые методы: "); 
MethodInfo[] mi = t.GetMethods(); //просто шок, что есть MethodInfo[] и почему у этого "массива" заполняются все ячейки сразу 
// Вывести методы, поддерживаемые в классе MyClass. 
foreach(Methodlnfo m in mi) { 
// Вывести возвращаемый тип и имя каждого метода. 
Console.Write(" " + m.ReturnType.Name + " " + m.Name +"("); 
// Вывести параметры. 
ParameterInfo[] pi = m.GetParameters() ; //аналогично непонятно
for (int i=0; i < pi.Length; i++) { 
Console.Write(pi[i].ParameterType.Name + " " + pi[i].Name); 
if(i+l < pi.Length) Console.Write(", "); 
} 
Console.WriteLine(")"); 
Console.WriteLine(); 
} 
} 
}
Как я понял, всё это чудо называется инкапсуляцией - не знаешь что внутри,знаешь только что случится,так?.
Хотелось бы,что бы мне разъяснили принцип инкапсуляции.
а так же вопрос, что изучать после Шилдта , раньше знал скриптовый язык Pawn и после прочтения книги просто пользовался руководством, в данном случае так же пользоваться msdn или cкачать книжку про платформу?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2012, 21:02
Ответы с готовыми решениями:

Продемонстрировать принцип иерархии, наследования классов и инкапсуляции данных
Продемонстрировать принцип иерархии, наследования классов и инкапсуляции данных.

В чем преимущество инкапсуляции
всем доброго времени!!! вот обычный код создания поля public object prop; но все рекомендуют...

В чем заключается необходимость интерфейсов?
Народ объясните мне новичку в чем заключается необходимость интерфейсов в С# и какую выгоду можно...

В чем заключается преимущество языка C# в сравнении с языком C++?
Здравствуйте, уважаемые программисты. Подскажите - в чем заключается преимущество языка C# в...

2
Каратель
Эксперт С++
6601 / 4020 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
14.04.2012, 21:20 2
Цитата Сообщение от SocialEngineer Посмотреть сообщение
Type t = typeof(MyClass); // получить объект класса Type представляющий класс MyClass
поправка - представлющий информацию о классе MyClass:
1) имя: " MyClass"
2) методы:
Sum
isBetween
и т.д
3) и т.д.
Цитата Сообщение от SocialEngineer Посмотреть сообщение
//просто шок, что есть MethodInfo[]
MethodInfo - класс который хранит атрибуты методов - имя, тип возвращаемого значения, типы входных параметров, тип к которому принадлежит метод и т.д.
Цитата Сообщение от SocialEngineer Посмотреть сообщение
и почему у этого "массива" заполняются все ячейки сразу
вы же сами и заполняете:
Цитата Сообщение от SocialEngineer Посмотреть сообщение
C#
1
MethodInfo[] mi = t.GetMethods();
Цитата Сообщение от SocialEngineer Посмотреть сообщение
//как я понимаю свойство из пространства имен Type
правильнее будет сказать что это свойство класса Type
0
29 / 31 / 2
Регистрация: 14.04.2012
Сообщений: 152
14.04.2012, 22:06  [ТС] 3
Спасибо большое,уж совсем завис по этой теме.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2012, 22:06

Практическая часть инкапсуляции
Есть практическая часть курса ulern. Сколько уже смотрю на этот код, все не могу понять с чего...

Свойства инкапсуляции и StackOverflowException
Привет. Столкнулся с проблемой. При выполнении пишет о StockOverFlowException. Помогите...

Нарушение инкапсуляции метода
Уважаемые, опытные, подскажите, чем может грозить нарушение инкапсуляции метода класса, кроме того...

Запутался в классах и инкапсуляции
Всем привет! Нужно переделать программу в ООП-стиль. Заменить структуры на классы, инкапсулировав...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru