
- •Лекция 1
- •14 Ч. Лекции
- •58 Ч. Лабораторные работы
- •1.0 Основы алгоритмизации задач
- •1.1. Методы подготовки решения задачи на эвм
- •1.2. Алгоритмы и его свойства
- •1.3. Способы описания алгоритмов:
- •1.4. Стандартные блок-схемы
- •1.5. Базовые алгоритмические структуры
- •1.6. Методы алгоритмизации задач
- •2. Основы программирования
- •2.1. Машинный код процессора
- •2.2. Программа на языке программирования
- •2.3. Трансляторы
- •2.4. Классификация языков программирования
- •2.5. Языки низкого уровня
- •2.6. Языки высокого уровня
- •Лекция 2
- •3.0. Интегрированная среда разработки (иср) Visual c# 2010 Express
- •3.1. Основные характеристики.
- •3.2. Консольное приложение
- •3.3. Сохранение проекта
- •3.3. Структура папок при сохранении консольного приложения
- •3.5. Компиляция
- •4.2. Словарь языка
- •4.3. Комментарии
- •4.4. Идентификаторы (имена)
- •4.5. Ключевые слова
- •4.6. Числа
- •4.7. Переменные и константы
- •5.0. Структура программы консольного приложения на c#
- •Лекция 3
- •6.0. Типы данных
- •6.1. Типы значений
- •6.2. Ссылочные типы
- •6.3. Задание типов в объявлениях переменных
- •6.4. Встроенные базовые типы
- •6.5. Типы чисел Типы целых чисел
- •Типы чисел с плавающей запятой
- •Значения типов по умолчанию
- •6.6. Преобразования типов
- •6.7. Стандартное форматирование чисел
- •6.8. Символы char
- •7. Инструкции, команды
- •7.1. Выражения
- •7.2. Разделители
- •7.3. Математические операции
- •7.4. Приоритеты операций
- •Лекция 4
- •7.0. Операторы
- •7.2. Унарные операторы
- •7.3. Мультипликативные операторы
- •7.4. Аддитивные операторы (типа сложения)
- •7.5. Операторы отношений
- •7.6. Операторы присвоения
- •8.0. Инструкции
- •8.1. Безусловный переход вызовом функций
- •8.2. Оператор перехода goto
- •Лекция 5
- •9.0. Условные операторы.
- •9.1. Сложные условия
- •9.2. Инструкция if
- •9.3. Инструкции выбора switch, case
- •Лекция 6
- •10.0. Операторы цикла
- •10.1. Инструкция goto
- •10.2. Инструкция for
- •10.3. Использование нескольких управляющих переменных цикла
- •10.4. Использование переменных цикла c любым шагом их изменения
- •10.5. Инструкция while . . Цикл с предусловием
- •10.6. Инструкция do - while Цикл с постусловием
- •10.7. Накопление сумм и произведений
- •10.8. Безусловные переходы
- •Лекция 7
- •11.0. Массивы
- •11.1. Операции с массивами
- •Вывод массива
- •Ввод массива
- •Поиск максимального ( или минимального ) элемента массива
- •Поиск заданного элемента массива
- •Сортировка массива
- •11.2. Расчет статистических показателей
- •11.3. Использование генератора случайных чисел
- •11.4. Массивы строк
- •Лекция 8
- •12.0. Введение в классы, объекты и методы
- •12.1. Синтаксис класса
- •13.0. Подпрограммы
- •13.1. Основные понятия
- •13.2. Сравнение вариантов
- •13.3. Описание методов (процедур и функций)
- •13.4. Аргументы и параметры
- •13.5. Области действия имен
- •13.6. Тело метода (процедуры и функции)
- •13.7. Вызов метода. Синтаксис.
- •13.8. Функция
- •13.9. Процедура
- •Лекция 9
- •14. Исключительные ситуации
- •14.1. Виды исключений:
- •14.2. Существуют два типа блоков:
- •Лекция 10
- •15. Объектно-ориентированное программирование (ооп)
- •15.1. Классы в с#
- •15.2. Основные принципы ооп
- •Конструкторы
- •Деструкторы
- •15.3. Графическая структура понятий оо Подхода
- •15.4. Преимущества ооп:
- •Лекция 11
- •16.0. Приложение под ос Windows
- •16.1. Основные характеристики
- •16.2. Основной экран среды:
- •16.3. Окно Конструктора формы
- •16.4. Окно Редактора кода
- •16.6. Характеристика проекта
- •16.7. Сохранение проекта – приложения под Windows
- •16.8. Запуск и компиляция приложения
- •16.9. Шаблон кода:
- •16.10. Разработка приложения
- •16.11. Простейшее приложение
- •16.12. Создание интерфейса приложения
- •16.13. Определение функциональности приложения
- •16.14. Отладка
- •Лекция 12
- •17.0. Ввод и вывод данных в Windows-Приложениях
- •17.1 Ввод из поля редактирования и вывод в метку, и окно сообщения
- •17.2 Окно сообщения
- •18.0 Процедуры и функции
- •18.1 Структура процедуры
- •18.2 Структура функции
- •19. Модули
- •19.1 Свойства модуля
- •19.1. Структура модуля
- •Лекция 13
- •20.0. Массивы в Windows Forms Application
- •20.1 Операции с массивами в Windows-приложениях
- •21.0. Графика в c#
- •21.1. Рисованные изображения
- •Объект Graphics
- •Перо (Pen) или карандаш
- •Кисть (Brush) или заливка
- •Шрифты и текст
- •21.2. Методы рисования
- •21.3. Методы заливки
- •21.4. Рисование с помощью примитивов
- •21.5. Рисование графика функции
- •21.6. Растровая графика
15.2. Основные принципы ооп
ООП включает в себя 3 основных принципа:
Инкапсуляция;
Наследование;
Полиморфизм.
Инкапсуляция – механизм сокрытия всех внутренних деталей объекта, не влияющих на его внешнее поведение. Это объединение объекта и методов работы с ним (или совмещение данных с методами в одном классе).
Класс приобретает определенную функциональность. Каждый класс обладает свойствами предка, а способы реализации этого свойства заключены внутри класса.
Эти способы недоступны за пределами класса. Более того, классы ничего не знают друг о друге. Они полностью разделены. Т.о. объект “закрыт” и окружение не может случайно изменить этот объект.
С помощью инкапсуляции данные объекта могут быть защищены от других объектов. Для инкапсуляции характерен принцип сокрытия информации, что существенно облегчает написание больших и стабильно работающих приложений.
Класс представляет характеристики объекта и выполняемые им действия. Действия обычно специфические для конкретных объектов. Их желательно сделать недоступными для других объектов. Помещение методов в класс «прячет» метод для других объектов.
Например, чтобы представить животное как класс C#, необходимо задать ему размер, скорость движения и силу, представленными в виде чисел, а также некоторые функции, например MoveLeft(), MoveRight(), SpeedUp(), Stop() и так далее, в которых можно написать код для выполнения "животным" этих действий.
В C# класс животного может выглядеть следующим образом.
public class :Животное
{
private int Размер;
private float Скорость;
private int Сила;
public void MoveLeft() // Метод сместиться влево
{
// Код здесь...
}
// Другие методы здесь...
}
Методы, свойства и события, а также все остальные внутренние переменные и константы (поля) называются членами класса.
Группировка членов в классы имеет не только логический смысл, она также позволяет скрывать данные и функции, которые должны быть недоступны для другого кода. Этот принцип и есть инкапсуляция.
При просмотре библиотек классов платформы .NET Framework будут видны только открытые члены этих классов. Возможно, каждый класс имеет закрытые члены, используемые внутренне этим классом или связанными классами, которые не предназначены для использования приложениями. Создавая собственные классы, нужно решить, какие члены будут открытыми, а какие — закрытыми.
Класс, наследующий свойства другого класса, обладает теми же возможностями, что и класс, от которого он порожден. Этот принцип называется наследованием.
Наследование – создание объектов–потомков, которые обладают всеми свойствами объектов–предков. При наследовании объекты–потомки наследуют свойства объектов-предков и приобретают черты, характерные только для них самих.
Порожденный класс называется потомком, а тот, от которого он порожден – предком. У объекта может быть только один предок, но много потомков.
Объект-потомок наследует все описания и методы объекта–предка. Для него нужно описывать только дополнительные свойства.
Наследуемые свойства и методы можно использовать в неизменном виде или их переопределять (модифицировать).
Нельзя переопределять данные при наследовании. Данные можно только добавлять. С помощью наследования одни классы объектов могут происходить от других.
Возможно многоуровневое наследование. Механизм наследования позволяет многократно применять программный код, создавая иерархию классов.
Класс может наследовать от другого класса. Это означает, что он включает все члены — открытые и закрытые — исходного класса, а также дополнительные определяемые им члены. Исходный класс называется базовым классом, а новый класс — производным классом. Производный класс создается для представления особых возможностей базового класса.
Наследование ускоряет программирование. Для нового класса нужно программировать только дополнения, которые он имеет.
Синтаксис наследования
КлассПотомок : КлассПредок;
Например, можно определить класс ДуховыеИнструменты, который наследует от класса МузыкальныеИнструменты. Класс ДуховыеИнструменты может выполнять те же действия, что и класс МузыкальныеИнструменты и дополнительно одно уникальнок действие. Код C# выглядит следующим образом.
public class ДуховыеИнструменты: МузыкальныеИнструменты
{
public void Дополнительный()
{
// Инструкции
}
}
Класс ДуховыеИнструменты: МузыкальныеИнструменты означает, что новый класс наследует все от класса родителя и имеет новый метод Duh и три закрытые переменные: Размер, Звучание и Форма. Если затем определяется следующий потомок - класс Трамбон, который наследуется от класса ДуховыеИнструменты, то он будет содержать все члены класса ДуховыеИнструменты, а также все члены класса МузыкальныеИнструменты. Но будет иметь и что-то свое, свойственное именно Трамбону.
Полиморфизм – это свойство классов решать схожие по смыслу проблемы разными способами.
Использование для разных объектов методов под одинаковыми именами, но с разным содержанием.
Это свойство, позволяющее одно и тоже имя метода использовать для решения нескольких задач.
Например, щелочек по кнопке Button1Click() может привести к различным действиям: изменению цвета объекта, его формы, появлению записи, и т.п.
Это достигается переопределением родительского метода в классе-потомке. Переопределение позволяет адресовать разным объектам одно и то же сообщение с разным исполнением. Родитель и потомок ведут себя по-разному.
Один и тот же метод выполняется по-разному для различных объектов.
Полиморфизм – возможность использования методов с одинаковым именем, но с разным содержанием.
Полиморфизмом дает возможность производного класса изменять или переопределять методы, которые он наследует от базового класса. Эта функция используется, если в методе, который имеет отличия, не определен в базовом классе, и нужно выполнить какие-то особые действия.
Существование в классе методов с одним и тем же именем называется перегрузкой, а сами одноименные называются перегруженными методы.
Например, мы можем рассчитать площадь треугольника (square) по трем сторонам, по двум сторонам и углу между ними, по стороне и высоте по другим наборам аргументов. Метод имеет общее название Square, а способы реализации, аргументы – разные. Метод Square – перегружен.
Перегрузка характерна и для законов операции. Например, + знак арифметического сложения, а с другой стороны – операция конкатенации для строковых переменных.
Компилятору известно, какой метод следует использовать, поскольку во время каждого создания объекта предоставляется список аргументов (если таковые имеются). Перегрузка может сделать код более гибким и удобочитаемым.