Главная страница
Навигация по странице:

  • Task_02_PropertyWriteOnceReadMany

  • Task_03_PropertyReadOnly

  • Task_05_PropertyWriteOnce

  • Task_06_OverloadsConstructor

  • Task_09_InheritsProtected

  • Решение Task 01 PropertyReadWrite Объектный анализ


    Скачать 133 Kb.
    НазваниеРешение Task 01 PropertyReadWrite Объектный анализ
    Дата06.05.2018
    Размер133 Kb.
    Формат файлаdoc
    Имя файлаssh_2_sem_TekhnProgr_Uslovia_Variant_09.doc
    ТипРешение
    #42984

    Task_01_PropertyReadWrite
    Постановка задачи

    Имеется служащий.

    Имеет свойства Имя (Name) и Зарплата (Salary).

    Задание

    1. Выполнить объектный анализ.

    2. Выполнить объектное моделирование.

    3. Выполнить объектное проектирование.

    4. Выполнить объектное программирование.

    5. Выполнить тестирование
    Решение Task_01_PropertyReadWrite

    Объектный анализ.

    Пусть будут Read Write String типа свойство Name и Read Write Decimal типа свойство Salary.

    Пусть будет конструктор.

    Он позволяет создавать объекты, инициализируя закрытые поля mName и mSalary для свойств Name и Salary.

    Объектное моделирование

    System_X

    |_Employee

    Объектное проектирование

    Создадим класс Employee.

    Члены класса.

    закрытые поля mName, mSalary.

    свойство Name WriteOnce String типа

    свойство Salary WriteOnceReadMany Decimal типа

    конструктор Employee(String aName, Decimal aSalary)

    Объектное программирование

    Исходный код
    Тестирование

    Сценарий тестирования.

    Создаем объект emp_X класса Employee, передав конструктору класса значение emp_X для свойства Имя и значение 200 для свойства Зарплата.

    Отобразим свойство Имя и Зарплата. Поменяем свойство Имя и Зарплата.

    Меняем свойства Salary на новые значения

    Отображаем значение свойства Name и Salary

    Меняем свойство Name на новое значение

    Отображаем значение свойства Salary

    Тест 1

    Если

    То ожидается ответ

    Действительн

    Task_02_PropertyWriteOnceReadMany
    Постановка задачи

    Имеется служащий.

    Имеет свойства Имя (Name) и Зарплата (Salary).

    Задание

    1. Выполнить объектный анализ.

    2. Выполнить объектное моделирование.

    3. Выполнить объектное проектирование.

    4. Выполнить объектное программирование.

    5. Выполнить тестирование
    Решение Task_02_PropertyWriteOnceReadMany

    Объектный анализ.

    Плохо, когда свойство Имя позволяет себя менять, (Read Write).

    Плохо, когда свойство Зарплата позволяет себя менять, (Read Write).

    Пусть будут Write Once Read свойство Name и Write Once Read Many свойство Salary.

    Пусть будет конструктор.

    Он позволяет создавать объекты, инициализируя закрытые поля mName и mSalary для свойств Name и Salary.

    Объектное моделирование

    System_X

    |_Employee

    Объектное проектирование

    Создадим класс Employee.

    Члены класса.

    закрытые поля mName, mSalary.

    свойство Name WriteOnceReadMany String типа

    свойство Salary WriteOnceReadMany Decimal типа

    конструктор Employee(String aName, Decimal aSalary)

    Объектное программирование

    Исходный код
    Тестирование

    Сценарий тестирования.

    Создаем объект emp_X класса Employee, передав конструктору класса значение emp_X для свойства Имя и значение 200 для свойства зарпалата.

    Отобразим свойство Имя и Зарплата.

    Меняем свойства Name и Salary на новые значения

    Отображаем значение свойства Name и Salary

    Меняем свойство Salary на новое значение

    Отображаем значение свойства Salary

    Тест 1

    Если

    То ожидается ответ

    Действительн

    Task_03_PropertyReadOnly
    Постановка задачи

    Имеется служащий.

    Имеет свойства Имя Name и Зарплата Salary.

    Задание

    1. Выполнить объектный анализ.

    2. Выполнить объектное моделирование.

    3. Выполнить объектное проектирование.

    4. Выполнить объектное программирование.

    5. Выполнить тестирование

    и Зарплата. Поменяем свойство Иимя и Зарплата/
    Решение Task_03_PropertyReadOnly

    Объектный анализ.

    Плохо, когда свойство Имя позволяет себя менять, хотя и один раз (Write Once).

    Плохо, когда свойство Зарплата позволяет себя менять только один раз (Write Once Read Many).

    Пусть будут Read Only String типа свойства Name и Salary.

    Пусть будет конструктор.

    Он позволяет создавать объекты, инициализируя закрытые поля mName и mSalary для свойств Name и Salary.

    Объектное моделирование

    System_X

    |_Employee

    Объектное проектирование

    Создадим класс Employee.

    Члены класса.

    закрытые поля mName, mSalary.

    свойство Name ReadOnly String типа

    свойство Salary ReadOnly Decimal типа

    конструктор Employee(String aName, Decimal aSalary)

    Объектное программирование

    Исходный код
    Тестирование

    Сценарий тестирования.

    Создаем объект emp_Vita класса Employee, передав конструктору класса значение Vita для свойства Имя и значение 200 для свойства зарпалата.

    Отобразим свойство Имя Тест 1

    Если

    То ожидается ответ

    Действительн

    Task_04_Method
    Постановка задачи

    Имеется служащий.

    ЗП Служащего повышается, если Процент_повышения_ЗП не превосходит Установленный_процент.

    Задание

    1. Выполнить объектный анализ.

    2. Выполнить объектное моделирование.

    3. Выполнить объектное проектирование.

    4. Выполнить объектное программирование.

    5. Выполнить тестирование
    Решение Task_04_Method

    Объектный анализ.

    Плохо, когда ЗП служащего нет возможности изменять.

    Поэтому пусть будет метод повышения ЗП.

    Он принимает через список параметров процент повышения зарплаты и повышает зарплату на этот процент.

    Пусть будет закрытое поле mPercent, инициализированное значением «10».

    Пусть будет конструктор.

    Он позволяет создавать объекты, инициализируя закрытые поля mName и mSalary для свойств Name и Salary.

    Пусть будут Read Only String типа свойства Name и Salary.

    Пусть будет метод RaiceSalary, позволяющий повысить зарплату на заданный процент.

    Объектное моделирование

    System_X

    |_Employee

    Объектное проектирование

    Создадим класс Employee.

    Члены класса.

    закрытые поля mName, mSalary, mPercent.

    свойство Name ReadOnly String типа

    свойство Salary ReadOnly Decimal типа

    конструктор Employee(String aName, Decimal aSalary)

    метод RaiceSalary, позволяющий повысить зарплату на заданный процент.

    Объектное программирование
    Исходный код

    Сценарий тестирования.

    Создаем объект emp_Х класса Employee, передав конструктору класса значение имени объекта emp_Х и величину зарплаты 200. Проверим случаи «да нет».

    Тестирование

    Тест 1

    Если

    То ожидается ответ

    Действительн
    Task_05_PropertyWriteOnce
    Постановка задачи

    Имеется служащий.

    ЗП Служащего повышается, если Процент_повышения_ЗП не превосходит Установленный_процент или, если пароль верный.

    Задание

    1. Выполнить объектный анализ.

    2. Выполнить объектное моделирование.

    3. Выполнить объектное проектирование.

    4. Выполнить объектное программирование.

    5. Выполнить тестирование
    Решение Task_05_PropertyWriteOnce

    Объектный анализ.

    Плохо, когда ЗП служащего повышалась вне зависимости от вида служащего, то есть для некоторых служащих ЗП следует повышать, если задан пароль, как разрешение на повышение ЗП.

    Поэтому введем в проект закрытое поле mPassword, инициализировав его значением «pw».

    Пусть будет закрытое поле mPercent, инициализированное значением «10».

    Пусть будет конструктор.

    Он позволяет создавать объекты, инициализируя закрытые поля mName и mSalary для свойств Name и Salary.

    Пусть будут Read Only String типа свойства Name и Salary.

    Пусть будет метод повышения ЗП. Он принимает через список параметров процент повышения зарплаты и пароль. Сравнивает процент с закрытым полем mPercent и, если процент не превышает установленный, то повышает зарплату, если превышает, то сравнивает пароль с закрытым полем mPassword и, если пароль верный, то повышает зарплату.

    Объектное моделирование

    System_X

    |_Employee

    Объектное проектирование

    Создадим класс Employee.

    Члены класса.

    закрытые поля mName, mSalary, mPercent, mPassword.

    свойство Name ReadOnly String типа

    свойство Salary ReadOnly Decimal типа

    конструктор Employee(String aName, Decimal aSalary)

    метод RaiceSalary, позволяющий повысить зарплату на заданный процент или по паролю.

    Объектное программирование

    Исходный код
    Тестирование

    Сценарий тестирования.

    Создаем объект emp_Vida_1 класса Employee, передав конструктору класса значение имени объекта Служ_Вида_1 и величину зарплаты 200.

    Проверим случаи «да-нет нет-да нет-нет да-да»

    Тест 1

    Если

    То ожидается ответ

    Действительн
    Task_06_OverloadsConstructor
    Постановка задачи

    Имеется два вида служащих.

    ЗП Служащие_Вида_1 повышается, если Поцент_повышения_ЗП не превосходит Установленный_процент.

    ЗП Служащие_Вида_2 повышается, если Поцент_повышения_ЗП не превосходит Установленный_процент, а если превосходит, то повышается, если пароль верный.

    Задание

    1. Выполнить объектный анализ.

    2. Выполнить объектное моделирование.

    3. Выполнить объектное проектирование.

    4. Выполнить объектное программирование.

    5. Выполнить тестирование
    Решение Task_06_OverloadsConstructor

    Объектный анализ.

    Плохо, когда Установленный_процент нельзя задавать. Поэтому введем метод SetPercent для установки закрытого поля mPercent для Установленный_процент.

    Пусть пароль будет представлен закрытым полем mPassword, инициализированное значением «pw».

    Плохо, когда был один конструктор. Позволял создавать объекты (Служащие_Вида_1), инициализируя закрытые поля mName и mSalary для свойств Name и Salary.

    Все служащие имели пароль для повышения ЗП, даже, если ЗП им повышать и не предполагалось на процент, превышающий Установленный.

    Поэтому пусть будет два конструктора.

    Один позволяет создавать объекты (Служащие_Вида_1), инициализируя закрытые поля mName и mSalary для свойств Name и Salary.

    Другой позволяет создавать объекты (Служащие_Вида_2), инициализируя закрытые поля mName, mSalary и mPassword для свойств Name и Salary.и Password.

    Пусть будут Read Only String типа свойства Name и Salary.

    Пусть будет метод повышения ЗП. Он принимает через список параметров процент повышения зарплаты и пароль. Сравнивает процент с закрытым полем mPercent и, если процент не превышает установленный, то повышает зарплату, если превышает, то сравнивает пароль с закрытым полем mPassword и, если пароль верный, то повышает зарплату.

    Объектное моделирование

    System_X

    |_Employee

    Объектное проектирование

    Создадим класс Employee.

    Члены класса.

    закрытые поля mName, mSalary, mPercent, mPassword.

    свойство Name ReadOnly String типа

    свойство Salary ReadOnly Decimal типа

    конструктор Employee(String aName, Decimal aSalary)

    конструктор Employee(String aName, Decimal aSalary, String aPassword)

    метод SetPercent для установки закрытого поля mPercent для Установленный_процент.

    метод RaiceSalary, позволяющий повысить зарплату по проценту и паролю.

    Объектное программирование

    Исходный код
    Тестирование

    Сценарий тестирования.

    Создаем объект emp_Vida_1 класса Employee, передав конструктору класса значение имени объекта Служ_Вида_1 и величину зарплаты 200.

    Создаем другой объект emp_Vida_2 класса Employee, передав конструктору класса значение имени объекта Служ_Вида_2 и величину зарплаты 1000 и пароль “pw”.

    Тест 1

    Если

    Для первого вида служащих обратимся к методу повышения зарплаты на допустимый процент и с НЕ верным паролем.

    То ожидается ответ

    Ожидаем "Работник Служ_Вида-1 имеет зарплату 220"

    Действительно

    Тест 2

    Если

    Для первого вида служащих обратимся к методу повышения зарплаты на не допуcтимый процент и с верным паролем.

    То ожидается ответ

    Ожидаем "Неверный пароль!"

    Действительно

    Тест 3

    Если

    Для второго вида служащих обратимся к методу повышения зарплаты на НЕ допуcтимый процент.

    и с верным паролем.

    То ожидается ответ

    Ожидаем "Работник Служ_Вида-2 имеет зарплату 2000"

    Действительно

    Тест 4

    Если

    Для второго вида служащих обратимся к методу повышения зарплаты на НЕ допуcтимый процент и с НЕ верным паролем. Отобразим зарплату. Ожидаем "Неверный пароль!"

    То ожидается ответ

    Действительно

    Task_07_OverloadsMethod
    Постановка задачи

    Имеется два вида служащих.

    ЗП Служащие_Вида_1 повышается, если Поцент_повышения_ЗП не превосходит Установленный_процент.

    ЗП Служащие_Вида_2 повышается, если Поцент_повышения_ЗП не превосходит Установленный_процент, а если превосходит, то повышается, если пароль верный.

    Задание

    1. Выполнить объектный анализ.

    2. Выполнить объектное моделирование.

    3. Выполнить объектное проектирование.

    4. Выполнить объектное программирование.

    5. Выполнить тестирование
    Решение Task_07_OverloadsMethod

    Объектный анализ.

    Плохо, когда Установленный_процент нельзя задавать.

    Поэтому введем метод SetPercent для установки закрытого поля mPercent для Установленный_процент.

    Пусть пароль будет представлен закрытым полем mPassword, инициализированное значением «pw».

    Плохо, когда был один конструктор. Позволял создавать объекты (Служащие_Вида_1), инициализируя закрытые поля mName и mSalary для свойств Name и Salary.

    Все служащие имели пароль для повышения ЗП, даже, если ЗП им повышать и не предполагалось на процент, превышающий Установленный.

    Поэтому пусть будет два конструктора.

    Один позволяет создавать объекты (Служащие_Вида_1), инициализируя закрытые поля mName и mSalary для свойств Name и Salary.

    Другой позволяет создавать объекты (Служащие_Вида_2), инициализируя закрытые поля mName, mSalary и mPassword для свойств Name и Salary.и Password.

    Пусть будут Read Only String типа свойства Name и Salary.

    Плохо когда был один метод повышения зарплаты. Метод принимал процент повышения зарплаты и пароль, если процент не превышал установленного, то повышал зарплату, если превышал, то проверял пароль и, если пароль верный, то повышал зарплату. Даже, если Служащие_Вида_1 не имели свойства «Пароль», они вынуждены были какой-то пароль задавать. Что есть плохо.

    Поэтому пусть будет два метода повышения зарплаты с одинаковым именем RaiseSalary (перегрузка методов).

    Один принимает через список параметров процент повышения зарплаты. Сравнивает процент с закрытым полем mPercent и, если процент не превышает установленный, то повышает зарплату, если превышает, то не повышает зарплату.

    Другой принимает через список параметров процент повышения зарплаты и пароль. Сравнивает процент с закрытым полем mPercent и, если процент не превышает установленный, то повышает зарплату, если превышает, то сравнивает пароль с закрытым полем mPassword и, если пароль верный, то повышает зарплату.

    То есть.

    Когда Служащий_Вида_1 обратится к методу повышения зарплаты только с допустимым процентом – повышение зарплаты произойдет. Иначе – не произойдет.

    Когда Служащий_Вида_2 обратится к методу повышения зарплаты только с допустимым процентом или обратится к методу повышения зарплаты с не допустимым процентом, и паролем – повышение зарплаты произойдет.

    Объектное моделирование

    System_X

    |_Employee

    Объектное проектирование

    Члены класса.

    закрытые поля mName, mSalary, mPercent, mPassword.

    свойство Name ReadOnly String типа

    свойство Salary ReadOnly Decimal типа

    конструктор Employee(String aName, Decimal aSalary)

    конструктор Employee(String aName, Decimal aSalary, String aPassword)

    метод SetPercent для установки закрытого поля mPercent для Установленный_процент.

    метод RaiceSalary, позволяющий повысить зарплату только по проценту, если он не превышает допустимый процент повышения.

    метод RaiceSalary, позволяющий повысить зарплату по проценту и паролю, если он превышает допустимый процент повышения.

    Объектное программирование

    Исходный код
    Тестирование

    Сценарий тестирования

    Создаем объект emp_Vida_1 класса Employee, передав конструктору класса значение имени объекта Служ_Вида_1 и величину зарплаты 200.

    Создаем другой объект emp_Vida_2 класса Employee, передав конструктору класса значение имени объекта Служ_Вида_2 и величину зарплаты 1000 и пароль “pw”.

    Тест 1

    Если

    Для первого вида служащих обратимся к методу повышения зарплаты на допустимый процент.

    То ожидается ответ

    Действительно

    Тест 2

    Если

    Для первого вида служащих обратимся к методу повышения зарплаты на НЕ допустимый процент.

    То ожидается ответ

    Действительно
    Сценарий тестирования.

    Тест 3

    Если

    Для первого вида служащих обратимся к методу повышения зарплаты на допустимый процент и с НЕ верным паролем.

    То ожидается ответ

    Действительно

    Тест 4

    Если

    Для первого вида служащих обратимся к методу повышения зарплаты на допустимый процент и с верным паролем.

    То ожидается ответ

    Действительно

    Тест 5

    Если

    Для второго вида служащих обратимся к методу повышения зарплаты на допустимый процент без пароля.

    То ожидается ответ

    Действительно

    Тест 6

    Если

    Для второго вида служащих обратимся к методу повышения зарплаты на НЕ допустимый процент и без пароля.

    То ожидается ответ

    Действительно

    Тест 7

    Если

    Для второго вида служащих обратимся к методу повышения зарплаты на НЕ допустимый процент и с верным паролем.

    То ожидается ответ

    Действительно

    Тест 8

    Если

    Для второго вида служащих обратимся к методу повышения зарплаты на НЕ допустимый процент и с НЕ верным паролем.

    То ожидается ответ

    Действительно

    Task_08_InheritsBase
    Постановка задачи

    Вариант 9
    /* Пусть объектная модель системы имеет вид:

    * System_X

    * |

    * |_A

    * | |_B

    * | | |_C

    * |

    * |_D

    * | |_E

    *

    *

    * Условия для тестирования наследования и ключевого слова base в конструкторе

    *

    * Пусть каждый класс имеет свойство Name,

    * инициализация которого обеспечивается при создании экземпляра класса значениеми вида Name_ИмяКласса.

    * Пусть класс E имеет свойство Age,

    * инициализация которого обеспечивается при создании экземпляра класса значением <17>.

    */
    Задание Task_08_InheritsBase

    1. Выполнить объектный анализ.

    2. Выполнить объектное моделирование.

    3. Выполнить объектное проектирование.

    4. Выполнить объектное программирование.

    5. Выполнить тестирование
    Решение Task_08_InheritsBase

    Объектный анализ.

    Объектное моделирование

    Смотри условие

    Объектное проектирование

    Класс System_X

    Членов не имеет.

    Класс A

    Члены класса.

    Закрытое поле mName string типа.

    Read Write public string свойство Name.

    Конструктор инициализации mName.
    Класс B

    Члены класса.

    Конструктор инициализации mName.
    Класс C

    Члены класса.

    Конструктор инициализации mName.

    Класс D

    Члены класса.

    Поле mName string типа.

    Read Write Свойство Name.

    Конструктор инициализации mName.
    Класс E

    Члены класса.

    Закрытое поле mAge float типа.

    Конструктор инициализации mName, mAge.

    Read Write public float свойство Age.
    Класс Program

    Члены класса.

    Объектная ссылка класса oA.

    Объектная ссылка oB.

    Объектная ссылка oC.

    Объектная ссылка oD.

    Объектная ссылка oE.

    Метод класса Main сигнатуры void(string [])
    Объектное программирование

    Исходный код

    ??
    Тестирование

    Сценарий тестирования

    /* Сценарий тестирования:

    * Тестируем наследование и ключевое слово base в конструкторе

    * - создать объекты obA,obB,obC,obD,obE, инициализировав свойство Name

    * - поменять свойство Name объекта obA на новое значение и отобразитиь

    * - поменять свойство Name объекта obB на новое значение и отобразитиь

    * - поменять свойство Name объекта obE на новое значение и отобразитиь

    * - поменять свойство Name объекта obD на новое значение и отобразитиь

    * - свойство Name объекта obC отобразитиь

    * - поменять свойство Name объекта obC на новое значение и отобразитиь

    * - свойство Age объекта obE отобразитиь

    * - поменять свойство Age объекта obE на новое значение <18> и отобразитиь

    */

    Тест 1

    Если

    Смотри модель потока событий условия

    То ожидается ответ ??

    Действительно ??

    Task_09_InheritsProtected
    Постановка задачи

    Вариант 9
    /* Пусть объектная модель системы имеет вид:

    * System_X

    * |

    * |_A

    * | |_B

    * | | |_C

    * |

    * |_D

    * | |_E

    *

    * Условия для тестирования наследования и ключевого слова base в конструкторе

    *

    * Пусть каждый класс имеет свойство Name,

    * инициализация которого обеспечивается при создании экземпляра класса значениеми вида Name_ИмяКласса.

    * Пусть класс E имеет ReadWrite свойство Age,

    * инициализация которого обеспечивается при создании экземпляра класса значением <17>.

    *

    * -------------------------------------------

    * Условия для тестирования наследования и ключевых слов protected и readonly

    *

    * Пусть класс A имеет ReadOnly Protected поле класса Age,

    * инициализация которого обеспечивается при бъявлении значением <99>.

    * Пусть класс C имеет метод Main_C без параметров, который отображает поле Age класса A

    * Пусть класс D имеет метод Main_errD без параметров, который отображает поле Age класса A

    */
    Задание Task_09_InheritsProtected

    1. Выполнить объектный анализ.

    2. Выполнить объектное моделирование.

    3. Выполнить объектное проектирование.

    4. Выполнить объектное программирование.

    5. Выполнить тестирование
    Решение Task_09_InheritsProtected

    Объектный анализ.

    Объектное моделирование

    Смотри условие

    Объектное проектирование

    Класс System_X

    Членов не имеет.

    Класс A

    Члены класса.

    static protected readonly float типа поле класса mAge.

    Закрытое поле mName string типа.

    Закрытое поле mName string типа.

    Read Write public string свойство Name.

    Конструктор инициализации mName.
    Класс B

    Члены класса.

    Конструктор инициализации mName.
    Класс C

    Члены класса.

    Конструктор инициализации mName.

    public void метод Main_C сигнатуры void(void)
    Класс D

    Члены класса.

    Поле mName string типа.

    Read Write Свойство Name.

    Конструктор инициализации mName.
    Класс E

    Члены класса.

    Закрытое поле mAge float типа.

    Конструктор инициализации mName, mAge.

    Read Write public float свойство Age.
    Класс Program

    Члены класса.

    Объектная ссылка класса oA.

    Объектная ссылка oB.

    Объектная ссылка oC.

    Объектная ссылка oD.

    Объектная ссылка oE.

    Метод класса Main сигнатуры void(string [])
    Объектное программирование

    Исходный код

    ??
    Тестирование

    Сценарий тестирования

    /* Сценарий тестирования:

    * Тестируем наследование и ключевое слово base в конструкторе

    *

    * - создать объекты obA,obB,obC,obD,obE, инициализировав свойство Name

    * - поменять свойство Name объекта obA на новое значение и отобразить

    * - поменять свойство Name объекта obB на новое значение и отобразить

    * - поменять свойство Name объекта obE на новое значение и отобразить

    * - поменять свойство Name объекта obD на новое значение и отобразить

    * - свойство Name объекта obC отобразитиь

    * - поменять свойство Name объекта obC на новое значение

    * - свойство Age объекта obE отобразитиь

    * - поменять свойство Age объекта obE на новое значение <18> и отобразитиь

    *

    * -------------------------------------------

    * Тестируем ключевые слова protected и readonly

    *

    * - вызвать метод Main_C класса C

    * - вызвать метод Main_errD класса D // Это приведет к ошибке.

    */

    Тест 1

    Если

    Смотри модель потока событий условия

    То ожидается ответ

    Действительно
    Task_10_Event
    Вариант 9
    /*Постановка задачи

    * Пусть объектная модель системы имеет вид:

    * System_X

    * |

    * |_A

    * | |_B

    * | | |_C

    * |

    * |_D

    * | |_E

    *

    * Пусть модель потока событий имеет вид:

    *3 4 5 6 7 8 9 10 11

    *------------------------->

    * Время

    *A B C D E

    *------------>

    *<------

    * <------

    *<------------------

    *

    */

    Задание

    1. Выполнить объектный анализ.

    2. Выполнить объектное моделирование.

    3. Выполнить объектное проектирование.

    4. Выполнить объектное программирование.

    5. Выполнить тестирование
    Решение Task_10_Event

    Объектный анализ.

    Объектное моделирование

    Смотри условие

    Объектное проектирование

    Класс System_X

    Членов не имеет.

    Класс A

    Члены класса.

    Закрытое поле mName string типа.

    Доступа public типа Read Write свойство Name.

    Конструктор инициализации mName.

    Доступа public делегат dlg_ev1_fromA_forC сигнатуры void(void)

    Доступа public событие ev1_fromA_for

    Доступа public метод Main_A сигнатуры void(void)
    Класс B

    Члены класса.

    Конструктор инициализации mName.

    Доступа public делегат dlg_ev1_fromB_forC сигнатуры void(void)

    Доступа public событие ev1_fromB_for

    Доступа public метод Main_B сигнатуры void(void)
    Класс C

    Члены класса.

    Конструктор инициализации mName.

    Доступа public метод Main_C сигнатуры void(void)

    Доступа public метод p_ev1_fromA_forC сигнатуры void(void)

    Доступа public метод p_ev1_fromB_forC сигнатуры void(void)

    Доступа public метод p_ev1_fromD_forC сигнатуры void(void)
    Класс D

    Члены класса.

    Поле mName string типа.

    Доступа public типа Read Write свойство Name.

    Конструктор инициализации mName.

    Доступа public делегат dlg_ev1_fromD_forC сигнатуры void(void)

    Доступа public событие ev1_fromD_forC

    Доступа public метод Main_D сигнатуры void(void)

    Доступа public метод p_ev1_fromE_forD сигнатуры void(void)
    Класс E

    Члены класса.

    Конструктор инициализации mName.

    Доступа public делегат dlg_ev1_fromE_forD сигнатуры void(void)

    Доступа public событие ev1_fromE_forD

    Доступа public метод Main_E сигнатуры void(void)
    Класс Program

    Члены класса.

    Объектная ссылка класса oA.

    Объектная ссылка класса oB.

    Объектная ссылка класса oC.

    Объектная ссылка класса oD.

    Объектная ссылка класса oE.

    Доступа public типа string поле класса str_Day

    Метод класса Main сигнатуры void(string [])

    Локальная переменная dat_Day типа DateTime
    Объектное программирование

    Исходный код

    ??
    Тестирование

    Сценарий тестирования

    /* Сценарий тестирования:

    * Тестируем организацию событий, ключевые слова delegate, event.

    Тест 1

    Если

    Смотри модель потока событий условия

    То ожидается ответ

    Действительно
    Task_11_AbstractClass»
    Условие

    /*Постановка задачи

    * Пусть работники имеют свойства Name и Salary.

    * Пусть работники имеют метод повышения зарплаты RaiseSalary.

    * Пусть алгоритмы методов повышения зарплаты для служащих и рабочих разные.

    *

    * Пусть объектная модель системы имеет вид:

    * System_X

    * |

    * |_Person

    * | |

    * | |_Employee

    * | | |_Buchgalter

    * | | |_Kassir

    * | |

    * | |_Worker

    * | |_Zabojshik

    *

    */

    Задание

    1. Выполнить объектный анализ.

    2. Выполнить объектное моделирование.

    3. Выполнить объектное проектирование.

    4. Выполнить объектное программирование.

    5. Выполнить тестирование

    Тестирование
    Решение Task_11_AbstractClass»

    Объектный анализ.

    Хорошо, когда свойства Name и Salary всех работников одинаковы:

    – одинаково инициализируются конструктором;

    – одинаково ReadOnly.

    Поэтому их, как инвариантные элементы всех работников, вынесем в базовый класс Person.

    Плохо, когда алгоритмы методов повышения зарплаты для служащих и рабочих разные.

    Тогда, пусть метод повышения зарплаты в классе Person будет абстрактным (без реализации), а классы Employee и Worker реализуют этот метод и, более того, «запечатают» словом sealed для невозможности его наследовать и изменять в производных классах работников.

    Объектное моделирование

    Смотри условие.

    Объектное проектирование

    Класс System_X

    Членов не имеет.

    Класс Person

    Члены класса

    Закрытое поле mName string типа.

    Закрытое поле mSalary decimal типа.

    Свойство Name, доступа public, типа string, вида ReadOnly.

    Свойство Salary, доступа public, типа decimal, вида ReadOnly.

    Конструктор инициализации mName, mSalary.

    Абстрактный метод RaiseSalary.

    Класс Employee

    Члены класса

    Наследованный конструктор инициализации mName, mSalary.

    Наследованное свойство Name.

    Наследованное свойство Salary.

    Метод RaiseSalary, доступа sealed, типа decimal, вида override.
    Класс Worker

    Члены класса

    Наследованный конструктор инициализации mName, mSalary

    Наследованное свойство Name

    Наследованное свойство Salary

    Метод RaiseSalary, доступа sealed, типа decimal, вида override.
    Класс Buchgalter

    Члены класса

    Поле mName string типа

    Поле mSalary decimal типа

    Наследованное свойство Name

    Наследованное свойство Salary

    Наследованный конструктор инициализации mName, mSalary.
    Класс Kassir

    Члены класса

    Поле mName string типа.

    Поле mSalary decimal типа.

    Наследованное свойство Name.

    Наследованное свойство Salary.

    Наследованный конструктор инициализации mName, mSalary.
    Класс Zabojshik

    Члены класса

    Поле mName string типа

    Поле mSalary decimal типа

    Наследованное свойство Name

    Наследованное свойство Salary

    Наследованный конструктор инициализации mName, mSalary

    Класс Program

    Члены класса

    Объектная ссылка класса oBuchgalter

    Объектная ссылка oKassir

    Объектная ссылка oZabojshik

    Метод класса Main сигнатуры void(string [])
    Объектное программирование

    Исходный код
    Тестирование

    Сценарий тестирования

    /* Сценарий тестирования:

    * Тестируем ключевые слова abstract, override, sealed

    Task_12_Polimorphizm
    /*Постановка задачи

    * Пусть фрагмент объектной модели системы имеет вид:

    * Employee

    * |_Worker

    * |_Clerk

    *

    * Пусть в базовом классе Employee есть метод ShowInfo, который выводит

    * информацию об объекте - Имя и Возраст. В классах Worker и Clerk этот метод

    * переопределяется с целью добавления к выводу информации наследованной от

    * базового класса еще и специфической информации – Отдел или Должность.

    */
    Задание

    1. Выполнить объектный анализ.

    2. Выполнить объектное моделирование.

    3. Выполнить объектное проектирование.

    4. Выполнить объектное программирование.

    5. Выполнить тестирование
    Решение Task_12_Polimorphizm

    Объектный анализ.

    Пусть в базовом классе Employee будет виртуальный метод ShowInfo, который выводит информацию об объекте - Имя и Возраст. В классах-наследниках Worker и Clerk этот метод переопределяется с целью добавления к выводу информации наследованной от базового класса еще и специфической информации – Отдел или Должность.

    Объектное моделирование

    Employee

    |_Worker

    |_Clerk

    Объектное проектирование

    Класс Employee

    Члены класса

    закрытые поля mName, mAge.

    свойство Name ReadWrite String типа

    свойство Age ReadWrite int типа

    конструктор Employee(String aName, int aAge)

    метод ShowInfo() отображает Имя и Возраст.

    Класс Clerk

    Члены класса

    закрытые поля mDeparment, mName, mAge.

    свойство Name ReadWrite String типа

    свойство Age ReadWrite int типа

    свойство mDeparment String типа

    конструктор Clerk (String aName, int aAge, string aDepartment)

    метод ShowInfo(). Метод переопределяется с целью добавления к выводу информации наследованной от базового класса еще и специфической информации – Отдел.

    Класс Worker

    Члены класса

    закрытые поля mProfession, mName, mAge.

    свойство Name ReadWrite String типа

    свойство Age ReadWrite int типа

    свойство Profession String типа

    конструктор Worker (String aName, int aAge, string aProfession)

    метод ShowInfo(). Метод переопределяется с целью добавления к выводу информации наследованной от базового класса еще и специфической информации – Должность.

    Объектное программирование

    1. Реализуем классы;

    2. Реализуем наследование, используя лексему двоеточие «:»;

    3. Реализуем закрытые поля уровня экземпляра mName, mAge, mDepartment, mProfession в классах Employee, Clerk, Worker.

    4. Реализуем свойства Name, Age, Department, Profession в классах Employee, Clerk, Worker;

    5. Реализуем конструктор в классе Employee;

    6. Реализуем конструкторы в производных классах Clerk, Worker, используя лексему «:» и ключевое слово base;

    7. Реализуем в классах метод public void ShowInfo() с функционалом вида Console.WriteLine("Работник \n Имя: " + Name + "\n" + "Возраст: " + Age + "\n\n"); Console.ReadLine();.

    Исходный код
    Тестирование

    Сценарий тестирования

    /* Сценарий тестирования:

    * В методе main класса Program создаем список работников emp типа Employee, используя

    * стандартный класс List, в который добавляем клерка Clerk и рабочего Worker.

    * Итерируя по списку оператором foreach с управляющей переменной p, на каждом шаге цикла

    * вызываем для каждого объекта в списке метод ShowInfo().

    * Ожидаем ответ – вывод информации: имя, возраст и место работы или профессия.

    */
    Task_13_Interface
    /*Постановка задачи

    * Дан дорожный примитив «Пересечение двух второстепенных дорог».

    *(вид дорожного примитива следует получить у преподавателя)

    *

    * | | | |

    * | | | |

    *___| |____| |___

    *

    *---------------------

    *___ ____ ___

    * | | | |

    * | | | |

    * | | | |

    *

    Задание

    1. Выполнить объектный анализ.

    2. Выполнить объектное моделирование.

    3. Выполнить объектное проектирование.

    4. Выполнить объектное программирование.

    5. Выполнить тестирование
    Решение Task_13_Interface
    Объектный анализ.

    Создадим класс интерфейс IMeteo, который обяжет своих наследников реализовать метод DataMeteo – метод сбора метеоданных.

    Создадим классы (для каждого сенсора свой), которые наследуют инфтерфейс IMeteo и реализуют метод инфтерфейса DataMeteo() каждый по своему! Именно, выводом вида Console.WriteLine("Сила Ветра = ").

    Создадим класс DorPrim без конструткора с методдом public void UseDataMeteo, который через параметр aSensMeteo типа IMeteo примет массив объектов – сенсоров и для каждого вызовет метод DataMeteo().

    В методе Main класа Program объявим экземпляр класса DorPrim, ссылочную перемннную myDorPrim, и вызовем метод UseDataMeteo с аргументом myMeteo.
    Объектное моделирование

    DorPrim

    |_Meteo

    | |_SensVeter

    | |_SensSneg

    | |_SensDojd

    | |_SensVidimost

    | |_SensSkolzota
    Объектное проектирование

    Классы SensVeter, SensSneg, SensDojd, SensVidimost, SensSkolzota

    Члены класса

    метод DataMeteo

    Класс интерфейс IMeteo

    Члены класса

    метод void DataMeteo()

    Класс DorPrim

    Члены класса

    метод public void UseDataMeteo (IMeteo[] aSensMeteo)

    Объектное программирование

    1. Реализуем классы
    Тестирование

    Сценарий тестирования

    /* Сценарий тестирования:

    * В методе main класса Program создать массив myMeteo типа IMeteo с

    * инициализатором вида {new SensVeter(), new SensSneg(), new SensDojd(),

    * new SensVidimost(), new SensSkolzota()}.

    * В бесконечном цикле, заканчивающемся по нажатию Ctrl+Break,

    * для каждого сенсора вызвать метод, возвращающий силу метео характеристики.

    */

    Если

    Функционал классов сенсоров есть строка вида

    Console.WriteLine("Сила Снега = ");

    То ожидается ответ

    Действительно


    написать администратору сайта