- •Модификатор параметров методов
- •Задача 1. Написать функцию обмена значениями двух переменных:
- •Задача 2. Организовать ввод с “защитой от дурака”.
- •Структуры
- •Структуры для работы со временем
- •От структур к объектам
- •Примеры Класс для работы с комплексными числами. Вариант 1.
- •Класс для работы с комплексными числами. Вариант 2.
- •Статические поля и методы
- •Класс для генерации случайных чисел
- •Исключения
- •Практическая часть урока Задача 1. Найти максимальное число.
- •Задача 2. Вычислить частное q и остаток r при делении а на d, не используя операций деления (/) и взятие остатка от деления (%).
- •Задача 3. Написать программу табуляции произвольной функции в диапазоне от a до b.
- •Задача 4. Игра “Угадай число”.
- •Домашнее задание
- •Дополнительные материалы
- •Эндрю Троелсен , “Язык программирования c# 5.0 и платформа .Net 4.5”. Типы значений и ссылочные типы Используемая литература
Структуры для работы со временем
В .NET Framework огромное количество уже готовых структур. Вот некоторые из них:
DateTime - хранит в себе дату и время;
TimeSpan - предназначен для хранения промежутков времени.
Особенно полезно знать, что при вычитании DateTime получается структура TimeSpan.
DateTime start=DateTime.Now; …. DateTime finish=DateTime.Now; TimeSpan duration=finish-start; |
От структур к объектам
Чтобы объяснить, что такое объект, нужно понять, что такое класс. А чтобы понять, что такое класс давайте проведем аналогию со структурой.
Когда мы описывали структуру, мы как бы описывали будущую переменную, но самой переменной мы пока не создавали. Когда же мы описываем переменную типа структуры, мы уже выделяем место в памяти для стуктуры,то есть появляется конкретный экземпляр структуры. Так же и с классом.
Класс - это будущий объект. В классе, так же как и в структуре, мы описываем будущий объект. Для создания же объекта нужно сначала объявить переменную - ссылку на объект, а потом попросить выделить место в памяти для объекта.
Описание класса:
class MyClass // Описали пустой класс { }
MyClass myObj=new MyClass(); // Создали объект класса MyClass |
Объекты относятся к ссылочным типам. Это означает, что их нужно создавать, используя слово new. Для объектов выделяется место в куче (heap), и переменная хранит ссылку на это место. При присвоении объекта другому объекту переносится адрес ссылки. То есть две переменные указывают на одну область памяти, или, другими словами, две переменные указывают на один и тот же объект..
Object a=new Object(); // Создали новый объект класса Object Object b; b=a; // В b хранится ссылка на объект a |
Почему же тогда нужны классы и структуры, если получается, что это почти одно и тоже. Дело в том, что структуры были придуманы еще до появления ООП, и их назначение было просто объединить в одном типе несколько данных. Структуры не поддерживают один из основных принципов ООП - наследование.
Структуру стоит использовать, когда она хранит в себе небольшой объем информации.
Примеры Класс для работы с комплексными числами. Вариант 1.
class Complex { // Все методы и поля публичные. Мы можем получить доступ к ним из другого класса. public double im; public double re;
public Complex Plus(Complex x2) { Complex x3 = new Complex(); x3.im = x2.im + this.im; x3.re = x2.re + this.re; return x3; }
public string ToString() { return re + "+" + im + "i"; } } |
Правда в этом случае мы нарушаем один из принципов ООП - инкапсуляция данных. Это означает, что данные объекта должны быть скрыты от прямого изменения. Но, если их скрыть, как же получить к ним доступ? Для этого существуют различные механизмы. Рассмотрим два из них: использование конструктора при создании объекта и механизм свойств.
