- •Оболочка .Net Framework
- •Свойства качественной программы.
- •Int beta; // Спецификатор private по умолчанию,
- •Наследование.
- •Int beta; // Спецификатор private по умолчанию,
- •Сортировка массива методом прямого выбора
- •Сортировка массива методом прямого обмена (пузырьковым методом)
- •Сохранение текущего состояния объектов в файлах
- •Значение параметра FileMode
- •Паттерны проектирования
- •Порождающие паттерны
- •Структурные паттерны
- •Паттерны поведения
История развития объектного подхода. Первым компьютерным решением, воплотившем в себе объектный подход, стал программно – аппаратный графический планшет, разработанный в 1963 году. Его разработал Айван Сазерленд. В качестве понятия класса он использовал определение «мастер», разделяя описание и реально существующий на экране объект. Эти объекты с помощью планшета могли быть нарисованы и перемещены в любую точку экрана. Основоположниками объектного подхода программирования считаются норвежцы Оле – Йохан Дал и Кристиан Нигорт – авторы языка программирования Симула. В 1965 г авторам Симулы пришла в голову фундаментальная идея – объединить в одно целое данные с процедурами их обрабатывающими и на основе этой идеи родилось понятие класса. Авторы так же придумали термин «класс» и «объект», тогда же возникла технологии функции и наследования. Возникает еще 2 языка программирования на основе объектного подхода – Lisp и Loga. Эти языки появились благодаря Алону Кею. Он придумал новую концепцию разработки в 1966г, в соответствии с которой набор последовательно выполняющихся инструкций мог быть без ущерба заменен коллекцией объектов, общающихся друг с другом путем асинхронного обмена сообщений. В 1972 г Кей воплотил свои идеи в новом объектном языке – Small Talk.
Именно здесь впервые появился термин ООП. Заложенные в Small Talk идеи и по сей день остались не превзойденными ни в каких других языках. В 1974 г Марган Минский, основоположник теории искусственного интеллекта, предложил идею Фрейма, отделившего описание класса от его конкретного представления. Эта идея быстро завоевала популярность в языках искусственного интеллекта, а Фрейм стал прямым предшественником современного понятия класса в языках C++, C#, Delphi.
Эффективность объектного подхода оказалась столь высока, что в 1979 г 11 компаний основали группу OMG, которая была призвана формировать стандарты на объектное –программирование. Эта группа первым делом приступила к выработке единого стандарта модели CORBA. Параллельно с CORBA разрабатывались другие объекты, такие как COM DCOM, ActiveX, ориентированные на прикладные, пользовательские элементы и основанные на элементах OLE. В 1994 г появился новый модифицированный язык моделирования UML, на основе существующих методологий визуального моделирования. В 2000 г появляется новая платформа .Net и язык программирования C#. Эта платформа себя очень хорошо зарекомендовала, и в 2005 г появляется .Net 2.0.
Архитектура платформы .Net. Платформа представляет собой надстройку над низкоуровневыми ОС и при этом не зависит не от типа ОС, ни от марки процессора. Ф-ции ядра в ней разделены и выполнены в модульном и расширяемом виде. Платформа .Net базируется на объектном представлении ресурсов и функциональных возможностях. В платформу включена библиотека на несколько тысяч классов. Ядро платформы .Net складывается из нескольких модулей:
.Net Framework – это платформа, ориентированная на быстрое визуальное создание приложений.
CLR – единая оболочка поддержки выполнения программ
ADO.Net – технология, предназначенная для работы с БД
ASP.Net – это сис- ма для быстрого создания web – приложений.
Web – службы, реализующие работу в сети
Др. встроенные технологии, обеспечивающие безопасность.
Оболочка .Net Framework
Оболочка ориентирована прежде всего на нужды программиста, она поддерживает объектно – ориентированную оболочку, в нее включено несколько тысяч стандартных классов. Программисты могут создавать собственные классы как в прикладных программах. Так и на системном уровне, расширяя стандартные возможности. Библиотеки классов .Net Framework охватывают множество областей, связанных с функционированием ОС, представляя программисту доступ к следующим возможностям:
1) работа в сети
2) обращение к БД
3) организация безопасного функционирования
4) система ввода/вывода
5) готовые элементы пользовательского интерфейса, с помощью которых удается создавать компактные прикладные приложения
6) стандартные возможности, востребованные разработчиками
7) поддержка интерфейса программирования Win32
Свойства качественной программы.
Понимаемость(информативность, осмысляемость, структурированность, сложность, модульность) – это свойство программы быть хорошо читаемой
Надежность (корректность, устойчивость) – это свойство программы выполнять поставленную задачу за определенное число шагов.
Сопровождаемость(сложность, модульность, изменяемость, тестируемость, переносимость, распараллеливаемость)это свойство программы по обеспечению данного программного продукта технической поддержкой и обновлением
Эффективность (распараллеливаемость, оптимизированность) – это свойство программы, заключающееся в многократном решении однотипных задач.
Свойства качества декомпозиции проекта. 1) вопрос декомпозиции, т. е. на какие компоненты, модули, функции. Классы нужно разбить программу, но при этом учитывать, что с ростом числа компонентов сложность программы возрастает. Поскольку увеличивается число связей м/у компонентами.2) связана с организацией взаимодействия м/у компонентами. Взаимодействие упрощается, если каждый компонент рассматривать как некий черный ящик, внутреннее устройство которого неизвестно, но известны выполняемые им функции, а так же входы и выходы. Т. О. для оценки качества программного продукта нужно учитывать 2 показателя: 1) сцепление внутри компонента – это показатель, характеризующий степень взаимосвязи отдельных его частей. 2) связанность м/у компонентами – это показатель, описывающий интерфейс м/у компонентом – клиентом и компонентом – сервером. Общее число входов и выходов есть мера связанности.
Понятие класса в ООП. Класс – это тип, определяемый программистом, в котором определены структуры данных и функции их обработки. Класс содержит константы, переменные, называемые поля класса, а так же выполняемые над ними операции и функции, называемые методами.
[модификаторы] class <имя_класса>
{
<закрытые функции и переменные класса>
<открытые функции и переменные класса>
};
Модификатор |
Пояснение |
public |
Класс или его член доступен из любой точки программы |
internal |
Класс (член) доступен в сборке, в которой он определен |
pritected |
Класс (член) доступен потомкам и только им |
private |
Члены класса доступны только методам этого же класса |
abstract |
Абстрактный класс; должен обязательно перекрываться в потомках |
sealed |
Класс не может иметь наследников |
static |
Определяет статических член класса. Для доступа к статическому члену можно не создавать объект класса — статические члены принадлежат не отдельному объекту, но классу как таковому. Если таким членом является поле или свойство, оно имеет одинаковое значение для всех экземпляров этого класса |
Пример №1
class Avto
{
private static string marka1= "BMW";
private static string color1= "black";
private static int speed1=120;
public static string marka = marka1;
public static string color= color1;
public static int speed=speed1;
}
class Executer
{
static void Main(string[] args)
{
Console.WriteLine(Avto.marka); // Вывод на экран значения переменной marka
Console.WriteLine(Avto.color); // Вывод на экран значения переменной color
Console.WriteLine(Avto.speed);
Console.ReadLine();// Ожидание нажатия клавиши Enter
}
Пример №2
using System;
class MyClass {
private int alpha; // Явно задан спецификатор private,