Массивы, строки C#. Знакомство с классами C#. Наследование в яп c#
Скачать 0.77 Mb.
|
Министерство образования и науки Российской Федерации Государственное образовательное учреждение высшего профессионального образования «КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ» Институт: Компьютерных Систем и Информационной безопасности Кафедра: Информатика и Вычислительная техника Курсовая работа по дисциплине: «Объектно ориентированное программирование» (наименование дисциплины) на тему: Массивы, строки C#.Знакомство с классами C#.Наследование в ЯП C#. (тема курсовой работы) Выполнил студент группы 16-ЗКБс-ИВ2-069 Муренко Антон Романович (ф.и.о) Допущен к защите___________________________________________________ Руководитель проекта проф. Дьяченко Р.А. Защищен____________________ Оценка_________________ (дата) Члены комиссии _____________________________________________________ ____________________________________________________________________ ____________________________________________________________________ (подпись, дата, расшифровка подписи) Краснодар 2017 г. СодержаниеСодержание 2 Введение 3 Массивы, строки C# 4 Знакомство с классами C# 21 Наследование в ЯП C# 24 Вывод по работе 31 Список используемой литературы 32 Введение С момента появления первых образцов персональных компьютеров прошло не так уж и много времени, но сейчас без них уже немыслимо огромное количество областей человеческой деятельности - экономика, управление, наука, инженерное дело, издательское дело, образование, культура и т.д. Интерес к персональным компьютерам постоянно растет, а круг их пользователей непрерывно расширяется. В число пользователей ПЭВМ вовлекаются как новички в компьютерном деле, так и специалисты по другим классам ЭВМ. Важнейшая роль в развитии современного общества в конце XX века принадлежит информатизации. По характеру и значению для будущего человеческой цивилизации процесс информатизации можно сравнить с переходом, человечества от аграрного общества к индустриальному. Подобно тому, как изобретение механического двигателя открыло эру комплексной механизации и автоматизации физического труда, изобретение ЭВМ сделало то же самое в отношении труда умственного. Процесс информатизации характеризуется использованием информации в качестве общественного продукта, обеспечивающего интенсификацию всех сфер экономики, ускорение научно-технического прогресса, интеллектуализацию основных видов человеческой деятельности и демократизацию общества. В результате внедрения новых информационных технологий значительно изменяются общественно-экономические структуры, формируется гибкое динамическое общество, способное к активной самооценке и выбору целей развития, быстрой и адекватной реакции на изменение внешней и внутренней среды. Основой информатизации является использование электронно-вычислительной техники для сбора, накопления, обработки и передачи информации. ЭВМ-комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач. Чтобы компьютер выполнил решение какой-либо задачи, ему необходимо получить от человека инструкции, как её решать. Набор таких инструкций для компьютера, направленный на решение конкретной задачи, называется компьютерной программой. Для написания для написания таких инструкций программисты используют языки программирования. Все языки программирования делятся на языки низкого (ассемблер), высокого (Си, Бейсик, Паскаль, Фортран, C++, C#) и сверхвысокого (Алгол-67, Пролог) уровня. Язык С# - универсальный язык общего назначения, область приложений которого - программирование систем в самом широком смысле. Кроме этого, С# успешно используется как во многих приложениях, так и в мощных операционных системах. Реализация С# осуществлена для машин в диапазоне от самых простых персональных компьютеров до самых мощных суперкомпьютеров и для всех операционных систем. Массивы, строки C# Задание №1 Задачи на использование одномерных целочисленных массивов. Условие вида «дан массив» означает, что пользователем вводится величина размерности и все элементы массива с клавиатуры. Осуществить ввод необходимых данных, выполнить реализацию алгоритма, обеспечить вывод полученных результатов. Для решения задачи предварительно составляется блок-схема. Если по ходу решения задачи требуется создание дополнительных массивов, размерность которых изначально неизвестна, необходимо выполнить предварительную обработку исходного массива, для выяснения 16 размерности вновь создаваемого. Не допускается использование операторов, прерывающих ход программы (break, goto). Вариант №9: 1) Даны два массива и . 2) Определить которых из них имеет больший диапазон, т.е. разницу между самым большим и самым меньшим значением. Решение: Для реализации программы было создано 3 метода. Первый из них – ReadArray(int num) (рис. 1), который возвращает массив типа double. Сначала мы считываем с консоли длину массива, а потом цикле просим пользователя ввести элемент массива. Рисунок 1- Блок-схема ReadArray Второй метод – GetRange(double[] arr), он используется для того, чтобы найти диапазон массива. С помощью цикла проходим по массиву и определяем минимальный и максимальный элемент массива, потом возвращаем разницу между этими значениями. Рисунок 2 – GetRange() В методе Main() (рис. 3) мы объявляем два массива и считываем их с помощью метода ReadArray, потом для каждого из них находим диапазон и потом сравниваем полученные значения и выводим соответствующий результат. Рисунок 3 – Блок-схема Main() Исходный код: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Lab { class Program { private static double[] ReadArray(int num) { Console.Write("Enter the quantity of elements in array #" + num + ": "); int size = Int32.Parse(Console.ReadLine()); double[] arr = new double[size]; for (int i = 0; i < size; ++i) { Console.Write("Enter element #" + (i + 1) + ": "); arr[i] = Double.Parse(Console.ReadLine()); } return arr; } private static double GetRange(double[] arr) { double min = Double.MaxValue; double max = Double.MinValue; foreach (double d in arr) { if (min > d) { min = d; } if (max < d) { max = d; } } return max - min; } static void Main(string[] args) { double[] a = ReadArray(1); double[] b = ReadArray(2); double rangeA = GetRange(a); double rangeB = GetRange(b); Console.WriteLine("\nRange of the array A: " + rangeA); Console.WriteLine("Range of the array B: " + rangeB); if (rangeA > rangeB) { Console.WriteLine("Array A has bigger range"); } else if (rangeA == rangeB) { Console.WriteLine("Arrays A and B have equal renages"); } else { Console.WriteLine("Array B has bigger range"); } Console.Read(); } } } Рисунок 4 – Пример выполнения программы Задание №2 Задачи на исследование серий в одномерных целочисленных массивах. Условие вида «дан массив» означает, что пользователем вводится величина размерности и все элементы массива с клавиатуры. Осуществить ввод необходимых данных, выполнить реализацию алгоритма, обеспечить вывод полученных результатов. Для решения задачи предварительно составляется блок-схема. Если по ходу решения задачи требуется создание дополнительных массивов, размерность которых изначально неизвестна, необходимо выполнить предварительную обработку исходного массива, для выяснения размерности вновь создаваемого. Не допускается использование операторов, прерывающих ход программы (break, goto). Вариант №9: 1) Дан целочисленный массив размера . 2) Преобразовать массив, увеличив его первую серию наибольшей длины на один элемент. Серия - это группа подряд идущих одинаковых элементов, длина серии — количество этих элементов (длина серии может быть равна 1). Выполнение работы: Для выполнения данного задания еще раз воспользуемся методом ReadArray(). Считав массив arr с консоли определим переменную maxLength = 0, которая будет показывать длину максимальной серии и переменную maxInx – индекс первого элемента максимальной серии. Создадим цикл с параметром I [0, arr.Length] массива, в этом цикле определяем переменную tmp = 1, которая указывает длину текущей серии, дальше создадим еще один вложенный цикл с парaметром J = [I + 1, arr.Length], и будем выполнять его пока arr[I] == arr[J] на каждой итерации инкрементируя tmp. После выполнения вложенного цикла сравниваем значения maxLength и tmp, если tmp больше maxLength, записываем текущие значения tmp и I в maxLength и maxInx соответственно. После этого создаем новый массив arr2, размером arr.Length + 1 и копируем значения с arr, записывая дополнительное значение arr[maxInx] в ячейку arr2[maxInx]. После этой манимуляции печатаем полученный массив arr2. Блок-схема алгоритма (рис. 5). Рисунок 5 – Блок-схемма Исходный код: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Lab { class Program { private static double[] ReadArray() { Console.Write("Enter the quantity of elements in array: "); int size = Int32.Parse(Console.ReadLine()); double[] arr = new double[size]; for (int i = 0; i < size; ++i) { Console.Write("Enter element #" + (i + 1) + ": "); arr[i] = Double.Parse(Console.ReadLine()); } return arr; } static void Main(string[] args) { double[] arr = ReadArray(); int maxLength = 0; int maxInx = 0; for (int i = 0; i < arr.Length; ++i) { int tmp = 1; for (int j = i + 1; j < arr.Length && arr[i] == arr[j]; ++j) { tmp++; } if (tmp > maxLength) { maxLength = tmp; maxInx = i; } } double[] arr2 = new double[arr.Length + 1]; for (int i = 0; i < maxInx; ++i) { arr2[i] = arr[i]; } arr2[maxInx] = arr[maxInx]; for (int i = maxInx; i < arr.Length; ++i) { arr2[i + 1] = arr[i]; } for (int i = 0; i < arr2.Length; ++i) { Console.Write(arr2[i] + " "); } Console.Read(); } } } Рисунок 6 – Пример выполнения программы Задание №3 Задачи на обработку одномерных целочисленных массивов. Условие вида «дан массив» означает, что пользователем вводится величина размерности и все элементы массива с клавиатуры. Осуществить ввод необходимых данных, выполнить реализацию алгоритма, обеспечить вывод полученных результатов. Для решения задачи предварительно составляется блок-схема. Если по ходу решения задачи требуется создание дополнительных массивов, размерность которых изначально неизвестна, необходимо выполнить предварительную обработку исходного массива, для выяснения размерности вновь создаваемого. Не допускается использование операторов, прерывающих ход программы (break, goto). Вариант №9: 1) Дан массив размера . 2) Не изменяя данный массив, вывести номера его элементов в том порядке, в котором соответствующие им элементы образуют возрастающую последовательность. Выполнение работы Для начала мы считываем массив arr с консоли используя функцию ReadArray(). Потом создадим список t, параметризированный типом Int32. Также создадим переменную min и запишем в нее максимальное значение типа Double. Дальше запустим цикл от 0 до arr.Length. В нем создадим вложенный цикл с параметром J на промежутке от 0 до arr.Length, в котором будем проводить проверку на то, что arr[j] < min и значения j нет в списке t, то записываем arr[j] в переменную min, а значение j присваиваем переменной inx. После окончания вложенного цикла добавляем inx в список t, выводим min на консоль и присваиваем ему значение Double.MaxVal. После выполнения внешнего цикла элементы массива будут напечатаны на консоль по возрастанию. Рисунок 7 – Блок-схема Исходный код: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Lab { class Program { private static double[] ReadArray() { Console.Write("Enter the quantity of elements in array: "); int size = Int32.Parse(Console.ReadLine()); double[] arr = new double[size]; for (int i = 0; i < size; ++i) { Console.Write("Enter element #" + (i + 1) + ": "); arr[i] = Double.Parse(Console.ReadLine()); } return arr; } static void Main(string[] args) { double[] arr = ReadArray(); List double min = Double.MaxValue; int inx = -1; for (int i = 0; i < arr.Length; ++i) { for (int j = 0; j < arr.Length; ++j) { if (min > arr[j] && !t.Contains(j)) { min = arr[j]; inx = j; } } Console.Write(min + " "); t.Add(inx); min = Double.MaxValue; } Console.Read(); } } } Рисунок 8 – Выполнение программы Задания №4 Задачи на обработку строк. Условие вида «дана строка» означает, что пользователем вводится строка с клавиатуры. Осуществить ввод необходимых данных, выполнить реализацию алгоритма, обеспечить вывод полученных результатов. Для решения задачи предварительно составляется блок-схема. Не допускается использование операторов, прерывающих ход программы (break, goto). Вариант №9: 1) Дана строка (предложение). 2) Составить программу, определяющую является ли текст перевёртышем без учёта пробелов. Выполнение работы: Сначала просим пользователя ввести строку, дальше считываем строку с консоли и записываем ее в str. Создаем строку str2 и инициализируем ее значением string.Empty. После этого создаем цикл с параметром I от 0 до str.Length, в котором проверяем, если str[I] не равно символу пробела, то добавляем этот символ в строку str2. Создаем переменную логическую flag = true, дальше создаем цикл с параметром I от 0 до str2.Length/2. В цикле выполняем проверку, если str2[I] != str2[str2.Length - I - 1], то записываем в переменную flag = false. После цикла если flag = true, то мы печатаем, что строка перевертыш, иначе, печатаем, что строка не перевертыш. Рисунок 9 – Блок-схема Исходный код: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Lab { class Program { static void Main(string[] args) { Console.WriteLine("Enter the string: "); string str = Console.ReadLine(); string str2 = string.Empty; for (int i = 0; i < str.Length; ++i) { if (str[i] != ' ') { str2 += str[i]; } } bool flag = true; for (int i = 0; i < str2.Length/2; ++i) { if (str2[i] != str2[str2.Length - i - 1]) { flag = false; } } if (flag) { Console.WriteLine("String is a flip-flop"); } else { Console.WriteLine("String is not a flip-flop"); } Console.Read(); } } } Рисунок 10 – Выполнение программы Задание №5 Задачи на двухмерные массивы. Условие вида «дана матрица» означает, что пользователем вводится с клавиатуры размерность и все элементы. Осуществить ввод необходимых данных, выполнить реализацию алгоритма, обеспечить вывод полученных результатов. Для решения задачи предварительно составляется блок-схема. Не допускается использование операторов, прерывающих ход программы (break, goto). Вариант №9: 1) Дана целочисленная матрица размера × . 2) Найти ее строки, содержащие равное количество положительных и отрицательных элементов (нулевые элементы матрицы не учитываются). Если таких строк нет, то вывести соответствующее сообщение. Выполнение работы: Сначала считываем с консоли количество строк (m) и количество столбцов (n) матрицы. Создаем матрицу t = new int[n, m]. Потом создаем цикл от 0 до n и вложенный в него цикл от 0 до m. Во вложенном цикле считываем значение и записываем его в соответствующую ячейку матрицы (рис. 11). Создаем, параметризированный типом int, список rows, а также две целочисленные переменные pos и neg. Потом создаем цикл с параметром I от 0 до n и вложенный в него цикл с параметром J от 0 до m. Во вложенном проверяем значение элемента t[I,J], если оно меньше ноля – инкрементируем переменную neg, если больше ноля – инкрементируем pos. После выполнения вложенного цикла сравниваем pos и neg, если они равны – добавляем значение I в список rows. Если после выполнения цикла список rows пустой – выводим сообщение, что нет строк, которые удовлетворяют условие, если же он не пустой – печатаем его элементы, которые являются номерами строк, которые удовлетворяют условие задачи. Рисунок 11 – Блок-схема считывания значений матрицы с консоли Рисунок 12 – Блок-схема программы Исходный код: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Lab { class Program { static void Main(string[] args) { int m, n; Console.Write("Enter the quantity of rows: "); m = Int32.Parse(Console.ReadLine()); Console.Write("Enter the quantity of columns: "); n = Int32.Parse(Console.ReadLine()); int[,] t = new int[m, n]; for (int i = 0; i < m; ++i) { for (int j = 0; j < n; ++j) { Console.Write("Enter element {" + (i + 1) + ", " + (j + 1) + "}: "); t[i, j] = Int32.Parse(Console.ReadLine()); } } List int pos, neg; for (int i = 0; i < m; ++i) { pos = neg = 0; for (int j = 0; j < n; ++j) { if (t[i, j] < 0) { neg++; } if (t[i, j] > 0) { pos++; } } if (pos == neg) { rows.Add(i); } } if (rows.Count == 0) { Console.WriteLine("There are no required rows"); } else { Console.Write("Required rows numbers: "); rows.ForEach(delegate(int i) { Console.Write((i + 1) + " "); }); } Console.Read(); } } } Рисунок 13 – Выполнение программы Знакомство с классами C# Задание №1 Cоздать uml-диаграмму классов предметной области (по варианту). В зависимости от контекста сделать соответствующие поля или методы класса доступными или скрытыми (модификаторы видимости). Задание №2 Создать файл с описанием классов предметной области (предметная об- ласть выбирается по варианту) на языке программирования C#. Класс создается в среде программирования Visual Studio (MonoDevelop, SharpDevelop). Рекомендуемая последовательность действий: 1. Создать новый проект типа «Консольное приложение». 2. Создать класс в соответствии с вариантом. Примечание. Класс должен быть создан в отдельном файле проекта и являться его частью. 3. Создать необходимые поля класса. 4. Создать необходимые методы класса. 5. Создать статические варианты методов, созданных на предыдущем этапе. 6. В случае необходимости контроля значений полей создать необходимые свойства (get и set), сделав соответствующие поля закрытыми. 7. Если в созданных методах (не статических) в качестве параметров используются только поля или свойства класса, то дополнительно создать свойства-«для чтения» возвращающие необходимые значения (свойства, реализующие свойство get методов). 8. В функции Main реализовать создание экземпляра, созданного на предыдущем этапе класса. 9. Продемонстрировать использование созданных полей и методов класса. 10. Подробно закомментировать исходный код. При создании класса необходимо реализовать все поля и методы с указанием способа доступа к ним. Вариант №9 Класс «Часы»: Поля ∙ Часы; ∙ Минуты; ∙ Секунды; Методы ∙ Конструктор; ∙ Инициализация; ∙ Расчет количества часов до конца суток; Выполнение работы: Диаграмма классов для выполненной работы (рис. 1): Рисунок 1 – Диаграмма классов Рисунок 2 – результат работы Исходный код программы: Класс Clock: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Lab { class Clock { private int hours; private int minutes; private int seconds; public int Hours { get => hours; set => hours = value; } public int Minutes { get => minutes; set => minutes = value; } public int Seconds { get => seconds; set => seconds = value; } public Clock(int hours, int minutes, int seconds) { this.hours = hours; this.minutes = minutes; this.seconds = seconds; } public Clock() { } public Clock GetHoursToEndOfTheDay() { Clock cl = new Clock(); cl.Seconds = 60 - seconds; if (seconds != 0) { cl.Minutes = 60 - minutes - 1; } else { cl.Minutes = 60 - minutes; } if (minutes != 0) { cl.Hours = 24 - hours - 1; } else { cl.Hours = 24 - hours; } return cl; } public override string ToString() { return "Clock: " + hours + ":" + minutes + ":" + seconds; } } } Класс Main: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Lab { class Program { static void Main(string[] args) { Clock clock = new Clock(15, 12, 33); Console.WriteLine("Initial Clock:"); Console.WriteLine(clock.ToString()); Console.WriteLine("Hours property: " + clock.Hours); Console.WriteLine("Minutes property: " + clock.Minutes); Console.WriteLine("Seconds property: " + clock.Seconds); Console.WriteLine("\nClock to end of the day:"); Console.WriteLine(clock.GetHoursToEndOfTheDay().ToString()); Console.Read(); } } } Наследование в ЯП C# Задание №1 Cоздать uml-диаграмму классов предметной области (по варианту). В зависимости от контекста сделать соответствующие поля или методы класса доступными или скрытыми (модификаторы видимости), зафиксировать наследование классов. Задание №2 Создать файлы с описанием классов предметной области (предметная область выбирается по варианту) на языке программирования C#. Класс создается в среде программирования Visual Studio (MonoDevelop, SharpDevelop). Рекомендуемая последовательность действий: 1. Создать новый проект типа «Консольное приложение». 2. Создать классы (базовый и производный) в соответствии с вариантом. Примечание. Классы должны быть созданы в отдельных файлах проекта и являться его частью. Классы должны состоять в одном пространстве имен (namespace). 3. Создать необходимые поля классов (для базового и производного). 4. Создать необходимые методы классов (для базового и производного). 5. Создать статические варианты методов, созданных на предыдущем этапе (для базового и производного). 6. В случае необходимости контроля значений полей создать необходимые свойства (get и set), сделав соответствующие поля закрытыми (для базового и производного). 7. Если в созданных методах (не статических) в качестве параметров используются только поля или свойства класса, то дополнительно создать свойства-«для чтения» возвращающие необходимые значения (свойства, реализующие свойство get методов). 8. В функции Main реализовать создание экземпляра созданных на предыдущем этапе классов. 9. Продемонстрировать использование всех конструкторов обоих классов. 10. Продемонстрировать использование созданных полей и методов обоих классов. 11. Для производного класса продемонстрировать вызов унаследованных методов. 12. Подробно закомментировать исходный код. При создании классов необходимо реализовать все поля и методы с указанием способа доступа к ним. Задание №3 Создать файл с описанием интерфейса, описывающего поля и методы базового класса из задания №2. Создать производный класс наследующий выше описанный интерфейс Рекомендуемая последовательность действий: 1. Cоздать новый файл с описанием интерфейса, подав следующие ко- манды меню: Project->Add New Item...->Visual C# Items->Iterface 2. Создать описания необходимых методов интерфейса (на основе методов соответствующего базового класса). 3. Создать описания необходимых свойств интерфейса (на основе свойств соответствующего базового класса). 4. Подробно закомментировать исходный код файла содержащего описание интерфейса. 5. Создать вторую версию производного класса (согласно соответствующего варианта), наследующего ранее созданный интерфейс, реализующий все методы и свойства интерфейса, а также соответствующие дополнительные поля, методы и свойства производного класса. 6. В функции Main реализовать создание экземпляра производного класса. 7. Продемонстрировать использование всех конструкторов класса. 8. Продемонстрировать использование всех созданных полей, свойств и методов класса. 9. Подробно закомментировать исходный код. Задание №4 Создать файл с описанием интерфейса, описывающего поля и методы производного класса из задания №2 согласно рекомендуемой последовательности действий. Рекомендуемая последовательность действий: 1. Открыть файл с описанием производного класса. 2. Осуществить зависание указателя мыши над названием производного класса и нажать правую кнопку мыши. 3. Из появившегося контекстного меню подать команду: Refactor->Extract Interface... 4. В диалоговом окне «Extract Interface» заполнить все необходимые поля для автоматического создания интерфейса (наименование интерфейса, название файла, содержащего интерфейс, выбрать все включенные в производный класс свойств и методы). 5. В диалоговом окне «Extract Interface» нажать кнопку «Ok». Вариант №9 Классы: базовый «Человек» (Person) и производный «Врач» (Doctor): Класс «Человек» Поля: - Дата рождения (объект класса DateTime) - Фамилия - Имя - Отчество - Пол (1 — «Женщина» и 2 — «Мужчина») - Рост - Вес Свойства: + Дата рождения + Фамилия + Имя + Отчество + Пол + Рост + Вес + Текущий возраст (только для чтения) Методы: + Инициализация (метод Init) 37 + Определение текущего возраста Конструктор Деструктор Класс «Врач» Поля: - Наименование документа, удостоверяющего личность - Номер документа - Серия документа - Кем выдан документ - Дата выдачи документа (класс DateTime) - Медицинская специальность - Год окончания ВУЗа - Больница Свойства: + Наименование документа, удостоверяющего личность + Номер документа + Серия документа + Кем выдан документ + Дата выдачи документа (класс DateTime) + Медицинская специальность + Год окончания ВУЗа 43 + Больница + Стаж работы (только для чтения) Методы: + Инициализация (метод Init) + Определение стажа работы + Переопределение метода ToString() Конструктор Выполнение задание: В результате выполнения лабораторной работы было создано 2 интерфейса и 4 класса, отобразим их на двух диаграммах классов (рис. 1, рис. 2) Рисунок 1 – Диаграмма классов №1 Рисунок 2 – Диаграмма классов №2 Рисунок 3 – результат выполнения программы Вывод по работе Объектно-ориентированный подход к проектированию базируется на представлении конкретной сферы задачи в виде большого количества моделей для независимой от языка создания системы программы на основе ее прагматики. В базе объектно-ориентированного языка программирования заложены два главных понятия: объект и класс. Объектом является определенный опознаваемая сущность, которая имеет необходимо действующее назначение в конкретной области. Классом в объектно-ориентированном программировании является абстрактный тип данных, состоящий из данных, функций и процедур. Современный объектно-ориентированный язык состоит из следующего набора синтаксических средств: объявление классов с полями и методами; механизм расширения класса; полиморфные переменные и параметры функций; полиморфное поведение экземпляров классов. Выполнение курсовой работы позволило закрепить ранее изученный материал по дисциплине «Программирование на языке высокого уровня», изучить новый материал, (в частности, проектирование приложений в интегрированной среде разработки Microsoft Visual C# 2008 Express Edition). Цель курсовой работы достигнута, задачи выполнены: теоретически проанализирована научная и методическая литература по проблеме разработки приложения «Телефонный справочник»; изучены основные компоненты и средства построения интерфейса среды программирования Microsoft Visual C# 2008 Express Edition; спроектирован интерфейс программы и порядок ее взаимодействия с пользователем; разработано приложение «Телефонный справочник». Список используемой литературы 1. Вайсфельд М. Объектно-ориентированное мышление.— СПб. : Питер, 2014.— 304 с. 2. Рихтер Д. CLR via C#. Программирование на платформе Microsoft .NET Framework 4.5 на языке C#. 4-е изд.— СПб. : Питер, 2014.— 896 с. 3. Ликнесс Д. Приложения для Windows 8 на C# и XAML.— СПб. : Питер, 2013.— 368 с. 4. Петцольд . Программирование для Microsoft Windows 8. 6-е изд.— СПб. : Питер, 2013.— 1008 с. 5. Волкова И. А., Иванов А. В., Карпов Л. Е. Основы объектно-ориентированного программирования. Язык программирования С++.— М. : Издательский отдел факультета ВМК МГУ, 2011.— 112 с. 6. Хейлсберг А. Язык программирования C#. Классика Computers Science. 4-е изд.— СПб. : Питер, 2011.— 784 с. 7. Медведев В. И. Особенности объектно-ориентированного программирования.— Казань : РИЦ .Школа., 2010.— 444 с. 8. Шамин Р. В. Современные численные методы в объектно-ориентированном изложении на c#.— 2010. 9. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений.— М. : ООО .И. Д. Вильямс., 2008.— 720 с. 10. Йордан Э., Аргила С. Объектно-ориентированный анализ и проектирование систем.— М. : Издательство .ЛОРИ., 2007.— 264 с. 11. Лесневский А. С. Объектно-ориентированное программирование для начинающих.— М. : БИНОМ, 2005.— 232 с. |