1.39M
Category: programmingprogramming

ООП. Классы. Объекты. Лекция 2

1.

ООП. Классы. Объекты
Лекция 2

2.

Основная идея ООП
Первая и главная идея, лежащая в основе объектноориентированного подхода: программируемая система
представляется в виде множества самостоятельных
сущностей (объектов), взаимодействующих друг с
другом. Каждая сущность сама отвечает за хранение
информации, необходимой для ее жизни, и имеет
(реализует) своё собственное поведение.
Объектно-ориентированное программирование – это методология
программирования, которая основана на представлении программы в виде
совокупности объектов, каждый из которых является реализацией
некоторого класса, а классы образуют иерархию, основанную на принципах
наследования [Г.Буч].

3.

Принципы ООП
o Инкапсуляция
o Полиморфизм
o Наследование
o Абстрагирование
o ...

4.

Абстрагирование
Выделение только значимой информации и исключение из рассмотрения
незначимой
Абстракция должна охватывать лишь самую суть объекта, не больше, но и не меньше

5.

Инкапсуляция
Свойство системы, позволяющее объединить данные
и методы, работающие с ними, в классе. Одни языки
(например, С++, Java) отождествляют инкапсуляцию
с сокрытием, но другие (Smalltalk) различают эти
понятия.

6.

Инкапсуляция
Заключается в построении оболочки вокруг
некоторого набора данных и кода,
обрабатывающего эти данные.
Запрещается прямой доступ к данным извне.
Некоторый внешний объект может повлиять
на инкапсулируемые данные только так, как
это разрешено сделать объекту, который эти
данные содержит.

7.

Наследование

8.

Полиморфизм
«поли» значит «много», а «морфизм» — «изменение» или
«вариативность», таким образом, «полиморфизм» — это
свойство одних и тех же объектов и методов принимать разные
формы
Полиморфизм – это различная реализация
однотипных действий.

9.

10.

повторение
Создание классов
Класс — это группа сущностей (объектов), обладающих
сходными свойствами, а именно: данными и
поведением. В дальнейшем отдельного представителя
некоторого класса будем называть объектом класса
или просто объектом.
Можно сказать, что объектам класса присущи их общие
свойства и поведение. Однако каждый объект всегда
имеет свое, уникальное состояние, определяемое
текущими значениями его свойств. Функциональное
назначение (поведение) класса определяется
возможными действиями над его представителями.
10

11.

повторение
Создание класса
Вся функциональность класса представлена его членами:
Полями (полями называются переменные класса),
Свойствами,
Методами,
Конструкторами,
Событиями и др. определениями.
class Person
{
public string name; // имя
public int age; // возраст
public void GetInfo(){
}
}
11

12.

повторение
Создание класса
Где определяется класс? Класс можно определять внутри пространства имен, вне
пространства имен (и даже внутри другого класса). Как правило, классы помещаются в
отдельные файлы. Но в данном случае новый класс расположен в файле, где
12
располагается класс Program.

13.

Поле
Поле можно объявить в любом месте внутри тела класса. Имя должно быть
уникальным в рамах класса. При создании экземпляра класса каждый объект
получает свой набор полей.
Поля базовых типов хранять свои значения в статической памяти (в стеке).
Память для них выделяется автоматически.
Поля ссылочных типов (других классов) хранят свои значения в динамической
памяти (в куче). Для таких полей следует позаботиться о выделении для них
динамической памяти (оператор new).
Спецификатор_видимости Тип Название {= начальное_значение} ;
//для базоых типов

14.

Методы
Методы определяют поведение объектов класса. При создании объекта класса,
объект получает весь набор методов реализванных в классе. Методы:
• Позволяют взаимодействоать объектам с внешним миров (ввод и вывод
данных).
• Корректно изменять поля объектов.
Спецификатор_видимости возвращаемый_тип Имя_метода(список_параметров){
Тело_метода;
}
Вызов метода вне класса:
Название_объекта.Название_метода(список параметров)
Вызов метода внутри другого метода класса:
Название_метода(список параметров)

15.

Методы класса

16.

Перегрузка метода. (Полиморфизм)
Методы класса, которые выполняют схожие действия принято обозначать
идинаковыми индификаторами. Такие методы должны различаться списком
параметров (типы возвращаемых значений могут быть любые).
public void print() { …}
public void print(bool a){… }
public void print(string name, int len) {…}
Методы могут иметь параметры со значением по умолчанию.
Правило: Если параетр имеет значение поУмолчанию, значит все
последующие параметры должны также иметь значение поУмолчанию.
public void print(bool a = true){… }
public string newLength(string name= “Name1”, int len = 0) {…}
public void print(bool a = true){… } // !
public string print(string name= “Name1”, int len = 0) {…} // !

17.

Передача параметров по ссылке
При передача параметра по ссылке создается ссылка на существующий объект
(переменную). Преобрзования выполняемые по ссылке осуществляются над
самим объектом.

18.

Возвращаемые параметры метода
Существуют специальные параметры, которые позволяют передавать
(возвращать) значения из методов.

19.

Отличие ref-параметра от
out-параметра

20.

Специальный список параметров
Список параметров используется для случая когда количество однотипных
параметров может меняться.

21.

Конструктор
Кроме обычных методов в классах используются
также и специальные методы, которые
называются конструкторами. Конструкторы
вызываются при создании нового объекта
данного класса. Конструкторы выполняют
инициализацию объекта.

22.

using System;
class Person{
public int rost = 0;//рост
public double weight; //вес
public string name; //имя
public Person(){
try{
Console.Write("Enter (using backspace): name rost weight=>");
string [] values = Console.ReadLine().Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries);
name = values[0];
weight = values[1];
rost = values[2]; }
catch (Exception ex) {Console.WriteLine(ex.ToString());}
}
public Person(int Rost, double Weight){
weight = Weight;
rost = Rost;
name = "Ivanov Ivan";
}
public Person(string Name){
rost = 130;
weight = 45.5;
name = Name;
}
public void getInfo(){
Console.WriteLine("Person:{0}\n weight = {1:F2}, rost = {2:D}", name, weight, rost);
}
}

23.

Создание объектов класса
class Program
{
public static void Main(string[] args)
{
Person Ivan = new Person();
Ivan.getInfo();
Person Petya = new Person(160, 67.8);
Petya.getInfo();
Person Senya = new Person("Sidorov Senya");
Petya.getInfo();
Console.ReadKey();
}
}

24.

25.

Конструктор по умолчанию
Если в классе не определено ни одного
конструктора, то для этого класса
автоматически создается конструктор по
умолчанию. Такой конструктор не имеет
параметров и не имеет тела.
English     Русский Rules