- •Пространства имен
- •Обзор
- •Цели
- •Пространства имен
- •Объявление пространств имен
- •Объявление пространств имен – пример
- •Вложенные пространства имен
- •Модификаторы доступа и пространства имен
- •Уточненное именование
- •Не уточненное именование
- •Уточненное именование - пример
- •Директивы пространств имен using
- •Допустимые и
- •Неоднозначные имена
- •Уточненное
- •Использование
- •Библиотека базовых
- •Наиболее часто
- •Пространство имен System.Array
- •Пространство имен System.Array
- •Пространство имен
- •Пространство имен System.Threading
- •Пространство имен System.Threading – пример
- •Синхронизация нитей (Threads)
- •Пространство имен System.IO – Пример 1
- •Пространство имен System.IO – Пример 2
- •Пространство имен System.IO
- •Пространство имен System.String – пример
- •Пространство имен System.String
- •Пространство имен System.Collections.ArrayList
- •Пространство имен System.Collections.ArrayList
- •Резюме
Пространства имен
Обзор
Глава 5 – Расширенные концепции ООП в языке C#
Виртуальные функции удобны в случае необходимости вызова метода производного класса из объекта базового класса.
Различие между замещением и полиморфизмом заключается в том, что при использовании полиморфизма решение о вызове того или иного метода принимается во время выполнения программы.
Абстрактные базовые классы – это классы, которые могут содержать как абстрактные члены (методы без реализации), так и неабстрактные члены. Метод без реализации в C# называется
операцией (operation).
Интерфейс – это чистый абстрактный базовый класс. Он может содержать только абстрактные методы, но не должен содержать исходного кода реализации.
Класс может реализовать более одного интерфейса; фактически, класс может являться производным от другого класса и одновременно выполнять реализацию интерфейса (одного или нескольких).
Цели
Объяснить, что такое пространство имен
Создавать свои пространства имен
Описать типы именования пространства имен
Использовать директивы пространств имен
Создавать псевдонимы (alias) для пространства имен
Использовать базовые библиотеки классов
.NET
Пространства имен
Позволяют избежать конфликта имен
Выполняют функцию элементов языка, которые помогают структурировать исходный код
Позволяет снизить трудозатраты, когда нам требуется повторное использование кода в другом приложении
Объявление пространств имен
Пространства имен объявляются также как классы
Синтаксис:
namespace NameSpaceName
{
//All Classes for this namespace go here!
}
Объявление пространств имен – пример
class SamsungTelevision
{
...
}
class SamsungWalkMan
{
...
}
class SonyTelevision
{
...
}
class SonyWalkMan
{
...
}
namespace Samsung
{
class Television
{...}
class WalkMan {...}
}
namespace Sony
{
class Television
{...}
class Walkman
{...}
}
Вложенные пространства имен
Объявление пространства имен внутри пространства имен
... |
|
|
namespace Sony |
|
|
|
... |
|
{ |
|
|
|
namespace |
|
namespace |
|
|
|
Sony.Television |
|
Television |
|
|
|
{ |
|
{ |
|
|
|
class T14inches |
|
class |
|
|
|
{ |
|
T14inches |
|
|
|
... |
|
{ |
|
|
|
} |
|
... |
|
|
|
class T21inches |
|
} |
|
|
|
{ |
|
class |
|
|
|
... |
|
T21inches |
|
|
|
} |
|
{ |
|
|
|
} |
|
... |
|
|
|
|
|
} |
|
... |
|
|
|
|
|
|
} |
|
|
} |
|
|
... |
|
|
Модификаторы доступа и пространства имен
Пространства имен всегда имеют доступ public
Пространства имен не могут иметь тип доступа protected, private или internal
...
public namespace Sony //error
{
...
}
private namespace Samsung //error
{
...
}
...
Уточненное именование
При использовании класса в своем пространстве имен, мы должны задавать только имя класса
При использовании класса вне своего пространства имен, мы должны ссылаться на класс используя полностью уточненное имя класса (fully qualified name)
Namespace.class name
Не уточненное именование
namespace Sony
{
class Television
{
...
}
class WalkMan
{
...
Television MyEntertainment = new Television();
...
}
}