Семинар.pptx
- Количество слайдов: 40
Лабораторные работы по курсу «Технологии программирования» Филипп Станкевич
Лабораторные работы 1. Оформление текстового документа в Microsoft Word 2. Системы контроля версий 3. Создание объектной модели предметной области 4. Создание логики приложения 5. Знакомство с Win. Forms. Создание графического интерфейса 6. Issue Tracker на примере Bit Bucket 2
Лабораторная работа № 2. Системы контроля версий 3
Системы контроля версий Программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое. 4
Популярные системы контроля версий • • SVN Git Mercury TFS 5
Пример репозитория кода 6
Стандартные операции • Commit • Pull • Push … 7
Клиенты • Tortoise. Git • Tortoise. SVN … 8
Задание на работу • Создать проект в системы контроля версий • Изучить интерфейс • Выполнить первый Commit (файл из первой лаб. работы) 9
Лабораторная работа № 3. Создание объектной модели предметной области 10
Основные понятия • Класс – абстрактный тип данных, содержит сами данные и операции, применимые к ним • Атрибут (поле класса) – переменная, связанная с классов • Метод – функция, принадлежащая классу • Интерфейс – конструкция, используемая для спецификации услуг (действий) класса • Абстрактный класс – базовый класс, который не предполагает создания экземпляров • Объект - некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеющая заданные значения атрибутов и методов. 11
Дополнительные понятия • Наследование • Инкапсуляция • Полиморфизм 12
Пример задания Вооружить подразделение оружием, определить его общий вес и стоимость. Примечание: Необходимо использовать иерархическое определение классов. 13
Объектная модель предметной области (UML) 14
Пример кода 1. public class Product 2. { 3. private string _name; 4. private int _price; 5. private double _weight; 6. 7. public string Name 8. { 9. get { return _name; } 10. set { _name = value; } 11. } 12. 13. public int Price 14. { 15. get { return _price; } 16. set { _price = value; } 17. } 18. 19. public double Weight 20. { 21. get { return _weight; } 22. set { _weight = value; } 23. } 24. } 15
Соглашение о кодировании • • • Классы с большой буквы (Camel. Style) Осмысленные имена переменных Название методов – глаголы Название классов – имена существительные Приватные поля класса начинаются с “_” Атрибуты класса (Property) – с большой буквы … 16
Лабораторная работа № 4. Создание логики приложения 17
Уровни приложения Уровень представления Уровень логики Уровень данных 18
Нарушение принципа отделения логики от представления public class Main. Form { private Division _division; public void button_click(){ int total. Price = 0; foreach (Wepon weapon in _division. Weapons) { total. Price += _ weapon. Price; } } } this. price. Label = total. Price. To. String(); 19
Правильный вариант public class Main. Form { private Division _division; public void button_click(){ Division. Calculator calculator = new Division. Calculator(); int total. Price = calculator. Calculate. Total. Price(_ division); } } this. price. Label = total. Price. To. String(); 20
Класс логики public class Division. Calculator { public int Calculate. Total. Price(Division division){ int total. Price = 0; foreach (Wepon weapon in division. Weapons) { total. Price += _ weapon. Price; } } } return total. Price; 21
Структура проекта Console Application Windows Application Class Library 22
Шаблоны проектирования • Factory Method (фабричный метод) • Builder (строитель) • Singleton (одиночка) … 23
Factory Method 24
Пример реализации public class Product. Factory { } public Product Create. Product () { Product product= new Product (); //инициализация данных объекта … return product; } 25
Рефакторинг (1) class Program { static void Main(string[] args) { //создание объектов Gun gun = new Gun(); gun. Name = "ТТ"; gun. Price = 10000; gun. Calibre = 5. 45; gun. Capacity = 8; Blade blade = new Blade(); blade. Name = "Штык-нож"; blade. Price = 1500; blade. Lenght = 20; blade. Hand. Count = Hand. Count. One; //добавление оружия в "подразделение" Division division = new Division(); division. Add. Weapon(gun); division. Add. Weapon(blade); } } 26
Рефакторинг (2) class Program { static void Main(string[] args) { Division division = Create. Division(); } private static Division Create. Division() { Gun gun = new Gun(); gun. Name = "ТТ"; gun. Price = 10000; gun. Calibre = 5. 45; gun. Capacity = 8; Blade blade = new Blade(); blade. Name = "Штык-нож"; blade. Price = 1500; blade. Lenght = 20; blade. Hand. Count = Hand. Count. One; Division division = new Division(); division. Add. Weapon(gun); division. Add. Weapon(blade); return division; } } 27
Рефакторинг (3) class Program { static void Main(string[] args) { Division division = Division. Factory. Create. Division(); } } public class Division. Factory { public static Division Create. Division() { Gun gun = new Gun(); gun. Name = "ТТ"; gun. Price = 10000; gun. Calibre = 5. 45; gun. Capacity = 8; Blade blade = new Blade(); blade. Name = "Штык-нож"; blade. Price = 1500; blade. Lenght = 20; blade. Hand. Count = Hand. Count. One; Division division = new Division(); division. Add. Weapon(gun); division. Add. Weapon(blade); return division; } } 28
Лабораторная работа № 5. Знакомство с Win. Forms. Создание графического интерфейса 29
Графический интерфейс (1) 30
Графический интерфейс (2) 31
Добавление нового объекта public class Add. Edit. Form { private Abstract. Weapon _weapon; public Abstract. Weapon { get { return _weapon; } set { _weapon = value; } } private Dialog. Result _result; public Dialog. Result { get { return _result; } set { _result = value; } } private void ok. Button_Click(object sender, Event. Args e) { weapon = new Gun(); //new Blade(). . //инициализация полей объекта Weapon из полей ввода формы weapon. Name = name. Text. Box. Text; … Result = Dialog. Result. OK; } } 32
Добавление ссылки на проект 33
Лабораторная работа № 6. Issue Tracker на примере Bit Bucket 34
Issue Tracker – система для отслеживания и управления задачами (ошибками в ПО, задачи для реализации, запросы тех. поддержки). Разновидностью Issue Tracker являются Bug Tracker – система отслеживания/учета ошибок. 35
Виды артефактов • Задача (Issue, Task) • Дефект (Bug) • Требование (Requirement) … 36
Описание бага Шаги воспроизведения: 1. Открыть главную форму 2. Выбрать объект 3. Выбрать пункт меню «Правка» 4. Нажать «редактировать» Ожидаемый результат: Открывается диалог редактирования Фактический результат: Выдается сообщение об ошибке (скриншот во вложении) 37
Статусы бага • • Новый Активный Исправлен Проверен 38
Задание на работу • • • Выбрать напарника Добавить напарника в свой репозиторий Выполнить check-out чужого проекта Выполнить тестирование проекта Завести 2 бага Проверить после исправления 39
Вопросы Филипп Станкевич f. stankevich@mail. ru 40
Семинар.pptx