ООП Лекции
http://msdn.microsoft.com/ru-ru/library справочная система на русском языке.
Использование библиотеки классов .NET Framework (Visual C#)
Библиотека классов платформы .NET Framework Framework Class Library, FCL содержит определения типов, например, классов, структур, перечислимых типов, интерфейсов и.т.д. Каждый тип предоставляет некоторую функциональность. Библиотека классов организована в пространства имен (namespace), в каждом из которых находятся связанные классы и структуры. Например, пространство имен System содержит типы для целых чисел, символов, строк, консольного ввода-вывода, форматирования данных, выполнения математических операций и др.
Пространства имен .NET Framework и классы, которые они содержат можно посмотреть с помощью инструментального средства Обозреватель объектов (Object Browser) среды разработки Microsoft Visual Studio. Открыть обозреватель объектов можно через меню Вид.
Значки обозревателя объектов
В Обозревателе объектов отображаются значки, служащие для представления сущностей кода, таких как пространства имен, классы, функции и переменные. В следующей таблице приведены значки с их описанием.
Значок |
Описание |
Значок |
Описание |
Namespace – пространство имен |
Метод или функция |
||
Класс |
Operator |
||
Интерфейс |
Свойство |
||
Структура |
Поле или переменная |
||
Delegate |
Событие |
||
Перечисление |
Константа |
В обозревателе объектов отображается три области:
-
слева область типов: классов, структур и других (могут быть также названия пространств имен и названия сборок – имен файлов, в которых размещены библиотеки.)
-
область членов типов в верхней правой части
-
область описаний в нижней правой части.
Рис 1. Пример отображения названия сборки в окне обозревателя объектов – имени файла, в котором размещены библиотеки.
Рис 2. Пример отображения названия пространства имен в окне обозревателя объектов.
Типы. Типы значений состоят из двух основных категорий:
-
Структуры. Пример
public struct Book
{
public decimal price;
public string title;
public string author;
}
-
Перечисления. Пример
enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};
Все простые (встроенные) типы — встроенные в язык C# — являются псевдонимами системных типов .NET Framework. Например, int является псевдонимом для System.Int32.
Ссылочные типы
-
class. Пример
class TestClass
{
// Methods, properties, fields, events, delegates
// and nested classes go here.
}
-
interface
-
delegate
-
массивы
Класс (структура) может содержать объявления следующих членов:
-
Конструкторы
-
Константы
-
Поля
-
Методы
-
Свойства
-
Индексаторы
-
Операторы
-
События
Рис 3 Пример отображения названия типов. Класс Console – статический класс пространства имен System в окне обозревателя объектов. В верхней правой части окна обозревателя отображены имена членов типа Console – имена методов и свойств.
Для того чтобы можно было использовать классы или структуры заданного пространства имен в программе на C#, необходимо добавить в код директиву using для этого пространства имен. Например, using System;
Член типа. Свойство . Получение доступа к свойствам.
Свойства можно использовать, как если бы они являлись открытыми членами данных (полями, имеющими тип), хотя в действительности они являются специальными методами, называемыми методами доступа. Метод доступа свойства get используется для возврата значения свойства, а метод доступа set используется для назначения нового значения. Т.е. со свойствами надо работать как с переменными. Статические свойства.
Рис 4. Отображение имени статического свойства Title класса Console в окне Обозревателя объектов.
Пример использования статического свойства Title класса Console.
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.Title = "Мой проект";
}
}
}
Результат
В программе статическому свойству Title класса Console, присваивается строковое значение "Мой проект", так как свойство имеет тип string и у него есть метод доступа set.
Если есть ключевое слово static в определении члена типа, то для доступа к члену типа необходимо указать имя типа, поставить точку и указать имя члена типа. Скобки после имени свойства ставить нельзя – со свойством надо работать как с переменной.
Задание Свойство BackgroundColor класса Console Возвращает или задает цвет фона консоли.
Написать код, демонстрирующий применение свойства.
Ответ
using System;
class Program
{
static void Main()
{
Console.BackgroundColor = ConsoleColor.DarkYellow;
Console.Clear();
}
}
Задание Свойство WindowHeight класса Console Возвращает или задает высоту области окна консоли.
Написать код, демонстрирующий применение свойства.
Какой тип имеет свойство?
Ответ
using System;
class Program
{
static void Main()
{
Console.WindowHeight = 1;
}
}
Тип int
Пример использования свойства в определении, которого нет ключевого слова static.
Посмотрим в обозревателе объектов, какие члены есть у класса string. Найдем не статическое свойство, например Length. (В определении свойства нет ключевого слово static.)
Для доступа к свойству необходимо создать экземпляр класса string.
string f = "ghdh fhfh";
int t = f.Length;
Console.WriteLine(t);
Посмотрим в обозревателе объектов, какие члены есть у структуры DateTime пространства имен System.
Рис. Отображение имени структуры DateTime пространства имен System в окне обозревателя объектов.
В списке членов типа DateTime есть метод имя, которого совпадает с именем типа. Это конструктор с параметрами, с помощью которого можно создать экземпляр структуры и инициализировать поля структуры значениями.
Например
DateTime mydata = new DateTime(2010, 09, 09);
Рис Отображение имени свойства Day структуры DateTime в окне обозревателя объектов.
Пример использования свойства Day в определении, которого нет ключевого слова static.
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DateTime mydata = new DateTime(2010, 09, 12);
int myday = mydata.Day;
Console.WriteLine(myday);
}
}
}
Так как в определении свойства нет ключевого слова static, то оно относится к экземпляру типа. Поэтому необходимо, сначала создать экземпляр структуры с помощью ключевого слова new, затем получить доступ к свойству указав имя экземпляра типа, точка, имя свойства без круглых скобок. Свойству Day нельзя присвоить значение, так как для него не определен метод доступа set. Можно только получить значение свойства.