Разработка элементарных программ на языке программирования C#. МУ_ЛБ. Лабораторная работа 1. Разработка элементарных программ на языке программирования C# Цель работы
Скачать 32 Kb.
|
имя_класса() |
Тип | Описание | бит |
bool | Значение истина/ложь | 1 |
byte | 8-битовое беззнаковое целое | 8 |
char | Символ | 16 |
decimal | Числовой тип для финансовых вычислений | 128 |
double | Число двойной точности с плавающей точкой | 64 |
float | Число с плавающей точкой | 32 |
int | Знаковое целое | 32 |
long | Длинное знаковое целое | 64 |
sbyte | 8-битовое знаковое целое | 8 |
short | Короткое целое | 16 |
uint | Беззнаковое целое | 32 |
ulong | Беззнаковое длинное целое | 64 |
ushort | Беззнаковое короткое целое | 16 |
https://metanit.com/sharp/tutorial/2.2.php
https://metanit.com/sharp/tutorial/2.27.php
Создать переменные различного типа (используя табл.1). Исследовать допустимые значения для присваивания этим переменным. Исследовать возможность использования одних переменных для вычисления значения других. Например:
Написать простой цикл с использованием в его теле условного оператора или оператора выбора (например, перебор значений в определенном диапазоне с указанием, является ли число чётным). Используя два других операторы цикла, реализовать аналогичные действия.
Создать простой метод, получающий один или несколько аргументов, значения которых изменяются в теле метода. Метод должен возвращать одно значение при помощи return. Исследовать различие между передачей аргументов в метод по значению и по ссылке (ref, out).
Результаты исследований описать в отчёте и представить его преподавателю для защиты.
{
тело_деструктора
}
Наследование
Наследование – это свойство, с помощью которого один объект может приобретать свойства другого. При этом поддерживается концепция иерархической классификации, имеющей направление сверху вниз. Используя наследование, объект должен определить только те качества, которые делают его уникальным в пределах своего класса. Он может наследовать общие атрибуты от своих родительских классов.
Синтаксис
class имя_класса : имя_родительского_класса
{
тело_класса
}
Пример:
class Worker: Person
{
private double Salary;
}
С помощью наследования создается иерархия классов.
Ход выполнения лабораторной работы
Примечание. Ход лабораторной работы предполагает преимущественно исследовательскую деятельность студента, в связи с этим формулировки заданий максимально носят максимально общий характер. Конкретные действия программы оставляются на усмотрения студента.
Создать базовый класс, построить иерархию классов в соответствии с выбранным вариантом задания:
а) Персона, студент, преподаватель, заведующий кафедрой
б) Персона, клиент, сотрудник, инженер
в) Организация, страховая компания, учебное заведение, университет
г) Печатное издание, журнал, книга, учебник
д) Товар, игрушка, пищевой продукт, молочный продукт
е) Транспортное средство, автомобиль, корабль, круизный лайнер
ж) Животное, птица, млекопитающее, парнокопытное
Разработать методы и свойства для каждого из определяемых классов.
Реализовать программу на C# в соответствии с вариантом исполнения. В программе использовать несколько объектов различных типов.
Результаты описать в отчёте и представить его преподавателю для защиты.
Материалы
https://metanit.com/sharp/tutorial/3.1.php
https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/class
Лабораторная работа №3.
Расширенные возможности языка программирования.
Цель работы
Познакомиться с интерфейсами в языке программирования C#
В C# для полного отделения структуры класса от его реализации используется механизм интерфейсов.
Интерфейс является расширением идеи абстрактных классов и методов. Синтаксис интерфейсов подобен синтаксису абстрактных классов. Объявление интерфейсов выполняется с помощью ключевого слова interface. При этом методы в интерфейсе не поддерживают реализацию. Членами интерфейса могут быть методы, свойства, индексаторы и события.
Интерфейс может реализовываться произвольным количеством классов. Один класс, в свою очередь, может реализовывать любое число интерфейсов. Каждый класс, включающий интерфейс, должен реализовывать его методы. В интерфейсе для методов неявным образом задается тип public. В этом случае также не допускается явный спецификатор доступа.
Синтаксис:
[атрибуты] [модификаторы] interface
Имя_интерфейса[:список_родительских_интерфейсов]
{
обьявление_свойств_и_методов
}
Пример:
interface Species
{
string Species();
void Feed();
}
class Cheetah : Animal, Species
{
private string ScientificName;
public string Species()
{ return ScientificName; }
public void Feed()
{ Weight++; }
}
Можно объявлять ссылочную переменную, имеющую интерфейсный тип. Подобная переменная может ссылаться на любой объект, который реализует ее интерфейс. При вызове метода объекта с помощью интерфейсной ссылки вызывается версия метода, реализуемого данным объектом.
Возможно наследование интерфейсов. В этом случае используется синтаксис, аналогичный наследованию классов. Если класс реализует интерфейс, который наследует другой интерфейс, должна обеспечиваться реализация для всех членов, определенных в составе цепи наследования интерфейсов.
Ход выполнения лабораторной работы
Примечание. Ход лабораторной работы предполагает преимущественно исследовательскую деятельность студента, в связи с этим формулировки заданий максимально носят максимально общий характер. Конкретные действия программы оставляются на усмотрения студента.
Расширить классы, реализованные при выполнении лабораторной работы №2, механизмом интерфейсов, добавив в них реализацию одного или двух интерфейсов как реализованных самостоятельно, так и существующих в платформе .NET. Например, из стандартных: возможность клонирования ICloneable или сравнения IComparable и т.п. Из реализованных самостоятельно: возможность подсчёта возраста IAgeable или веса IWeightable и т.п.
Доработать основную программу таким образом, чтобы она демонстрировала возможности использования нового функционала.
Результаты описать в отчёте и представить его преподавателю для защиты.
Лабораторная работа №4.
Событийно-ориентированное программирование
Цель работы
Познакомиться с механизмом делегатов и событий в языке программирования C#
Литература для ознакомления
https://habr.com/ru/post/213809/
https://ru.stackoverflow.com/questions/226505/event-и-delegate-в-чем-отличие
https://habr.com/ru/post/198694/
https://docs.microsoft.com/ru-ru/dotnet/standard/events/
Ход выполнения лабораторной работы
Примечание. Ход лабораторной работы предполагает преимущественно исследовательскую деятельность студента, в связи с этим формулировки заданий максимально носят максимально общий характер. Конкретные действия программы оставляются на усмотрения студента.
Расширить классы, созданные при выполнении лабораторной работы №3, добавив в них реализацию интерфейса IComparable.
Описать generic-класс MyList
Во всех классах реализовать минимум по одному событию.
Доработать основную программу таким образом, чтобы она демонстрировала возможности использования нового функционала:
Добавление элементов в список (в качестве элементов выбрать один из классов из реализованных в ЛР №3).
Сортировка элементов (в том числе с использованием стороннего компаратора)
Удаление элементов / очистка списка.
Обработку событий.
Результаты описать в отчёте и представить его преподавателю для защиты.