Объект — это некоторая структура, соответствующая объекту реального мира, его поведению.
Объект в программе – это совокупность данных, характеризующих его состояние, и функций их обработки, моделирующих его поведение.
Для представления объектов используется понятие класс.
Объект – это конкретный экземпляр класса.
Основные принципы ООП:
Наследование
Инкапсуляция
Полиморфизм
Объект используется через интерфейс – совокупность правил доступа.
Полиморфизм.
Полиморфизм — это возможность использовать одинаковые имена для методов, входящих в различные классы.
Все классы сгруппированы в пространства имен.
Любая создаваемая в .NET программа использует пространство имен System, в котором определены классы, обеспечивающие базовую функциональность.
Идентификатор может включать буквы, цифры и символ подчеркивания.
Идентификатор не может начинаться с цифры.
Прописные и строчные буквы в идентификаторах различаются.
Т.е. напр., Vasja1, VASJA1 и VaSjA1 – это разные идентификаторы
Длина идентификатора не ограничена.
В С# для имен используют обычно две нотации: Паскаля и Camel.
Нотация – соглашение о правилах создания имен.
В нотации Паскаля каждое слово в имени начинается с прописной буквы: MaxDlina
В нотации Camel каждое слово в имени кроме первого начинается с прописной буквы: maxDlina, myBestFriend
int.MaxValue (System.Int32.MaxValue) – максимальное значение типа int.
Например,
int dlina; float b;
При описании можно инициализировать переменные:
int x = 1, b;
float y = 0.1f, n = y * 2 + 2.1;
Область действия переменной начинается в точке ее описания и распространяется до конца блока, внутри которого она описана.
Блок – это код, заключенный в фигурные скобки.
Имя переменной должно быть уникальным в области ее действия.
Если операнды разного типа или операция для этого типа не определена, перед вычислениями автоматически выполняется преобразование типа по правилам неявного преобразования:
Например:
long y = 500;
int x = (int) y;
byte z = (byte) x;
В последнем случае данные будут потеряны.
Класс описывается следующим образом:
[ атрибуты] [ спецификаторы] class имя_класса [ : предки]
{
тело класса
}
protected для вложенных классов доступ только из элементов данного и производных классов
internal доступ только из данной программы
private для вложенных классов доступ только из элементов класса, внутри которого описан данный класс.
Для не вложенных классов используются только спецификаторы public и internal.
По умолчанию принят спецификатор internal.
Методы реализуют действия, выполняемые классом или экземпляром
Свойства определяют характеристики класса в совокупности со способами их задания и получения ( методами записи и чтения)
Конструкторы выполняют действия по инициализации экземпляров или класса в целом
Индексаторы обеспечивают возможность доступа к элементам класса по их порядковому номеру
Операции задают действия с объектами с помощью знаков операций
События, на которые может реагировать объект, определяют уведомления, которые может генерировать класс
Типы – внутренние по отношению к классу типы данных
Например, пусть имеется следующее описание класса:
class Primer1{}
Тогда для создания объектов p1 и p2 в программе следует набрать
Primer1 p1 = new Primer1();
Primer1 p2 = new Primer1();
Формат операции: new тип ( [ аргументы ])
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
}
}
}
Ключевое слово namespace создает для проекта собственное пространство имен. Таким образом, программным объектам можно давать имена, не волнуясь о том, что они могут совпасть с именами в других пространствах имен.
Пока программа содержит только один класс Program, содержащий только один элемент - метод Main.
В каждом приложении обязательно должен присутствовать метод Main. Именно с него начинается выполнение программы.
В классе Console существует несколько вариантов методов с именами Write и WriteLine, предназначенных для вывода значений различных типов.
Методы с одинаковыми именами, но с разными параметрами называются перегруженными.
Методы вывода перегружены для всех встроенных типов данных.
Для доступа к методу используется операция доступа (точка):
Console.WriteLine(параметр);
Перед объединением строки с числом нужно преобразовать число в строку с помощью метода ToString().
Первым параметром передается строковая константа, содержащая обычные символы, которые выводятся на экран, а также управляющие последовательности и параметры в фигурных скобках.
Эти параметры представляют собой номера переменных в списке вывода и при выводе заменяются на значения соответствующих переменных (Нумерация с нуля).
Для каждого параметра можно задать ширину поля вывода.
Например:
Console.WriteLine("x={0,5}\ty={1,4}",x,y );
Console.Write("Введите символ\n");
char name = (char) Console.Read();
Для ввода символа можно использовать метод Read(), который возвращает код символа типа int или -1, если символ не был введен.
Поэтому требуется явное преобразование в тип char.
Преобразование выполняется с помощью класса Convert из пространства имен System, используя соответствующие методы класса ToInt32(s), ToDouble(s), ToByte(s) и т.д.
Здесь s – параметр типа string.
Например:
string s;
s = Console.ReadLine();
byte h = Convert.ToByte(s);
Например:
byte w = byte.Parse(s);
Функции класса Math
В классе Math пространства имен System реализованы всевозможные математические функции.
Arccos x Acos(x)
Arcsin x Asin(x)
Arсtan x Atan(x)
округление до большего целого Ceiling(x)
Натуральный логарифм Log(x)
Десятичный логарифм Log10(x)
число е Е
число π PI
Exp(x)
tg x Tan(x)
Pow(x,y)
Sqrt(x)
Остаток от деления IEEERemainder(x,y)
Округление до меньшего целого Floor(x)
Знак числа Sign(x) тип результата int, аргументы
перегружены
Спецификаторы полей и констант:
public доступ к элементу не ограничен
protected доступ только из данного и производных классов
internal доступ только из данной сборки
private доступ только из данного класса
static одно поле для всех экземпляров класса
Поля, характеризующие класс в целом, т.е. имеющие одно и то же значение для всех экземпляров класса, следует описывать как статические.
При создании каждого объекта (экземпляра) класса в памяти выделяется отдельная область, в которой хранятся его данные.
Статические поля класса и константы существуют в единственном экземпляре для всех объектов класса.
Обращение к константе класса:
имя класса. имя константы
Обращение к обычному полю ( полю экземпляра) класса:
имя экземпляра. имя поля
Обратиться к полям этого класса можно следующим образом:
Результат выполнения программы:
0
2,5
0
2,5
1
5
А
пустая строка
Метод описывается один раз, а вызываться может необходимое количество раз.
Синтаксис метода:
[ атрибуты ] [ спецификаторы ] тип имя ([параметры])
{
тело метода
}
заголовок метода
последовательность операторов
Для работы со статическими данными класса используются статические методы (static), для работы с данными экземпляра – методы экземпляра (просто методы).
Статические методы можно вызвать, не создавая объект.
Чаще всего применяется спецификатор доступа к методам public.
Например:
class Primer2
{ string s;
public string vvods()
{
s = Console.ReadLine();
return s;
}
Например:
public void vyvods()
{ Console.WriteLine(s); }
Параметры в заголовке используются для обмена информацией с методом и определяют множество значений аргументов, которые можно передавать в метод.
Для каждого параметра указывается тип.
Например:
static int maximum(int x, int y)
{
if (x > y) return x;
else return y;
}
Если метод возвращает значение, то он вызывается отдельным оператором, а если не возвращает, то в составе выражения в правой части оператора присваивания.
Например:
Primer2 S1 = new Primer2();
string g = S1.vvods(); S1.vyvods(); Console.ReadKey();
При вызове метода из другого метода того же класса имя класса или экземпляра можно не указывать.
Например, если метод maximum является методом класса Primer2, то из метода Main можно обратиться к нему след. образом:
int max = Primer2.maximum(5, 8);
или
int max = Primer2.maximum(c1, c2+6);
В С# предусмотрены след. виды параметров:
параметры-значения
параметры-ссылки
выходные параметры
параметры-массивы
При вызове метода в качестве соответствующего аргумента на месте параметра-значения может находиться выражение, а в том числе переменная и константа.
Например, описанный выше метод maximum имеет два параметра-значения.
При описании параметра-ссылки в заголовке метода перед указанием типа помещают ключевое слово ref
При вызове метода в область параметров копируется не значение аргумента, а его адрес, т.е. метод работает непосредственно с переменной из вызывающей функции и может ее изменить.
При вызове метода в качестве аргумента на месте параметра-ссылки может находиться только ссылка на инициализированную переменную точно того же типа со словом ref перед аргументом.
При описании выходного параметра в заголовке метода перед указанием типа помещают ключевое слово out.
Выходному параметру обязательно должно быть присвоено значение внутри метода, а в вызывающем коде переменную достаточно описать.
При вызове метода перед соответствующим аргументом тоже указывается слово out.
Этот параметр применяется, например, когда требуется использовать имя поля, совпадающее с именем параметра метода:
3
При выполнении оператора P2.set_y(b); выполнение this.y = y; это фактически y=b и P2.y = y
5.3
x
y
set_x
set_y
Имя конструктора должно совпадать с именем класса.
[спецификатор] имя класса([параметры])
{ тело конструктора}
Конструктор не возвращает значение.
Класс может иметь несколько конструкторов для инициализации объектов разными способами.
Обычно используется спецификатор public.
Для инициализации статических данных класса можно создать статический конструктор.
Статический конструктор вызывается автоматически до вызова конструктора объекта. Он должен быть закрытым.
static имя класса()
{ тело конструктора}
Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть