- •Об’єктно-орієнтоване програмування
- •Содержание
- •Тема 1. Понития ооа, ооПр и ооп Лекция 1. Объектная модель и принципы ее организации
- •1. Понития ооа, ооПр и ооп и их отличия от подходов структурного проектирования
- •2. Основные понятия ооп
- •Тема 2. Основы программирования на языке с# .Net Лекция 2. Введение в программирование на с# .Net
- •1. Роль платформы .Net
- •2. Первая программа на c# и основные приемы работы в системе ms Visual Studio
- •3. Структура программы
- •4. Собственные пространства имен
- •Лекция 3. Система типов данных языка с#
- •1. Система типов данных языка с#
- •2. Преобразование типов
- •Лекция 4. Выражения и операторы языка с#
- •1. Выражения
- •2. Операторы
- •2.1. Операторы ввода и вывода
- •2.2. Операторы ветвления
- •2.3. Операторы цикла
- •2.3. Оператор безусловного перехода
- •Лекция 5. Массивы
- •1. Основные понятия
- •2. Одномерные массивы
- •3. Многомерные массивы
- •4. Класс Array
- •5. Класс Random
- •Лекция 6. Структуры и перечисления
- •1. Структуры
- •3. Перечисления
- •Лекция 7. Символы и строки
- •1. Символы char
- •2. Неизменяемые строки string
- •3. Изменяемые строки
- •Лекция 8. Файловая система
- •1. Основные сведения
- •2. Работа с каталогами
- •2.1. Абстрактный класс FileSystemInfo
- •2.2. Класс DirectoryInfo
- •2.3. Класс Directory
- •3. Работа с файлами
- •3.1. Класс Filelnfo
- •3.2. Класс File
- •Тема 3. Принципы парадигмы объектно-ориентированного программирования Лекция 9. Пронципы объектно-ориентированного программирования
- •1. Основные понятия
- •2. Роль инкапсуляции
- •3. Роль наследования
- •4. Роль полиморфизма
- •Лекция 10-11. Классы и объекты
- •1. Основные понятия
- •2. Функциональные элементы класса
- •2.1. Данные: поля и константы
- •2.2. Методы
- •2.3. Конструкторы
- •2.4. Деструкторы
- •2.5. Свойства
- •2.6. Индексаторы
- •3. «Один класс – один файл»
- •Лекция 12-13. Класы коллекций
- •1. Основные понятия
- •2. Класс Stack
- •3. Класс Queue
- •4. Класс ArrayList
- •Тема 4. Инкапсуляция и скрытие информации Лекция 14. Инкапсуляция как средство структурирования систем
- •1. Основные понятия
- •2. Основная концепция инкапсуляции
- •Тема 5. Перегрузка операторов и функций Лекция 15. Модификатор доступа переменных и функций
- •1. Основные понятия
- •2. Примеры использования модификаторов доступа
- •Лекция 16. Перегрузка операторов и функций
- •1. Операции класса
- •2. Унарные операции
- •3. Бинарные операции
- •4. Операции преобразования типов
- •Implicit operator целевой_тип (параметр) //неявное преобразование
- •Тема 6. Наследование и полное использование кода Лекция 17. Основы наследования
- •1. Иерархия классов
- •2. Основы наследования
- •3. Использование защищенного доступа
- •Лекция 18. Вызов базового конструктора
- •1. Наследование конструкторов
- •2. Вызов базового конструктора
- •Тема 7. Многоуровневое наследование. Конфликт имен и потоков классов Лекция 19-20. Многоуровневое наследование и его недостатки
- •1. Многоуровневая иерархия
- •2. Переменные базового класса и производного класса
- •3. Виртуальные методы
- •4. Абстрактные методы и классы
- •Лекция 21. Классы потоков вводв и вывода
- •1. Основные понятия
- •2. Стандартный поток ввода
- •3. Стандартный поток вывода
- •4. Стандартный поток вывода сообщений об ошибках
- •5. Программа StdStreams
- •Лекция 22. Классы потоков для работы с файлами, памятью и сетью
- •1. Класс BufferedStream
- •2. Класс FileStream
- •3. Класс MemoryStream
- •4. Класс NetworkStream
- •5. Класс CryptoStream
- •1. Основы полиморфизма
- •Тема 8. Полиморфизм и виртуальные функции Лекция 23. Основы полиморфизма и преимущества его использования
- •2. Преимущества использования полиморфизма
- •Лекция 24. Динамическое связывание виртуальных методов
- •1. Виртуальные методы
- •2. Вызов базового метода
- •Тема 9. Интерфейсы Лекция 25. Интерфейсы
- •1. Основные понятия
- •2. Пример опредиления интерфейса и работы с ним
- •Лекция 26. Стандартные интерфейсы .Net
- •1. Стандартный интерфейс iComparable
- •2. Перегрузка операций отношения с помощью метода CompareTo
- •3. Стандартные интерфейсы iEnumerable и iEnumerator
- •Тема 10. Объектно-ориентированное программирование Windows-приложений на основе WindowsForms Лекция 27-28. Библиотеки классов реализации функциональных возможностей Windows
- •1. Формы
- •6. Компиляция программы
- •7. События в Windows-приложениях
- •7.1. События мыши
- •Лекция 29. Разработка графических интерфейсов пользователя
- •1. Общтие сведения
- •2. Группы элементов управления
- •Лекция 30-31. Работа с даннями
- •1. Что такое реляционная база данных?
- •2. Модель объектов ado.Net
- •3. Подготовка ado.Net к работе в приложении
- •Лекция 32. Создание пакетов установки
- •1. Общие сведения
- •2. Создание пакетов установки
- •3.Создание простого пакета установки без библиотеки .Net Framework
3. Изменяемые строки
Чтобы создать строку, которую можно изменять, в С# предусмотрен класс StringBuilder, определенный в пространстве имен System.Text. Объекты этого класса всегда объявляются с явным вызовом конструктора класса (через операцию new) . Примеры создания изменяемых строк:
StringBuilder a =new StringBuilder(); //создание пустой строки, размер по умолчанию 16 символов инициализация строки и выделение необходимой памяти
StringBuilder b = new StringBuilder("abcd"); //создание пустой строки и выделение памяти под 100 символов
StringBuilder с = new StringBuilder(100); //инициализация строки и выделение памяти под 100 символов
StringBuilder d = new StringBuilder("abcd", 100); //инициализация подстрокой "bcd", и выделение памяти под 100 символов
Основные элементы класса приведены в приложении 8.
Как видим, методы класса StringBuilder менее развиты, чем методы класса String, но они позволяют более эффективно использовать память за счет работы с изменяемыми строками. Рассмотрим примеры использования данных методов.
static void Main()
{
try
{
StringBuilder str=new StringBuilder("Площадь");
PrintString(str);
str.Append(" треугольника равна");
PrintString(str);
str.AppendFormat(" {0:f2} см ", 123.456);
PrintString(str);
str.Insert(8, "данного ");
PrintString(str);
str.Remove(7, 21);
PrintString(str);
str.Replace("а", "о");
PrintString(str);
StringBuilder str1=new StringBuilder(Console.ReadLine());
StringBuilder str2=new StringBuilder(Console.ReadLine());
Console.WriteLine(str1.Equals(str2));
}
catch { Console.WriteLine("Вознико исключение"); }
}
static void PrintString(StringBuilder a)
{
Console.WriteLine("Строка: "+a);
Console.WriteLine("Текущая длина строки " +a.Length);
Console.WriteLine("Объем буфера "+a.Capacity);
Console.WriteLine("Мах объем буфера" + a.MaxCapacity);
Console.WriteLine();
}
С изменяемой строкой можно работать не только как с объектом, но как с массивом символов:
static void Main()
{
StringBuilder a = new StringBuilder("2*3=3*2");
Console.WriteLine(a);
int k=0;
for (int i = 0; i < a.Length; ++i )
if (char.IsDigit(a[i]))
k+=int.Parse(a[i].ToString());
Console.WriteLine(k);
}
На практике часто комбинируют работу с изменяемыми и неизменяемыми строками. Однако если необходимо изменять строку, то в этом случае используют StringBuilder.
Контрольные вопросы:
Справедливо ли утверждение, что в С# строки являются объектами?
Каким образом можно получить значение длины строки?
Какие функции выполняет метод Substring()?
Лекция 8. Файловая система
План:
Основные сведения
Работа с каталогами
Абстрактный класс FileSystemInfo
Класс DirectoryInfo
Класс Directory
Работа с файлами
Класс Filelnfo
Класс File
1. Основные сведения
В пространстве имен System.IO предусмотрено четыре класса, которые предназначены для работы с файловой системой компьютера, т.е для создания, удаления переноса и т.д. файлов и каталогов.
Первые два типа – Directory и Fi1е реализуют свои возможности с помощью статических методов, поэтому данные классы можно использовать без создания соответствующих объектов (экземпляров классов).
Следующие типы – DirectoryInfo и FileInfo обладают схожими функциональными возможностями c Directory и Fi1е, но порождены от класса FileSystemInfo и поэтому реализуются путем создания соответствующих экземпляров классов.
