Similar presentations:
Структура и объединение. Основы объектно - ориентированного программирования (тема 08)
1.
ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙИМЕНИ МУХАММАДА АЛ-ХОРАЗМИЙ
ПРОГРАММИРОВАНИЕ 1
SWD1316
ТЕМА
08
Структура и объединение. Основы
объектно-ориентированного
программирования.
АБДУЛЛАЕВА ЗАМИРА
ШАМШАДДИНОВНА
Доцент кафедры Основы
информатики
1
2.
Содержание1. Структура;
2. Объединение;
3. Объектно-ориентированное программирование
(ООП);
4. Заключение.
П РО Г РА М М И РО ВА Н И Е 1
2
3.
Зачем нужны структуры?Список студентов:
символьные строки
• фамилия
• имя
целое число
• день рождения
•…
? Как хранить данные?
Несколько массивов:
char fam[N];
char imya[N];
int den[N];
...
неудобно работать
(сортировать и т.д.), ошибки
Задачa: объединить разнотипные данные в один блок.
П РО Г РА М М И РО ВА Н И Е 1
3
4.
СтруктурыСтруктура – это объединение нескольких объектов, возможно,
различного типа под одним именем, которое является типом
структуры. В качестве объектов могут выступать переменные,
массивы, указатели и другие структуры.
Объявление структур:
typedef struct Имя нового типа
{
тип поле1;
тип поле2;
...
тип поле3;
};
П РО Г РА М М И РО ВА Н И Е 1
4
5.
СтруктурыПри объявление структуры можно отпускать ключевое слово typedef.
struct Student
{
char fam[30]; // фамилия, строка
char imya[20]; // имя студента
char otch[30]; // отчество студента
int den;
// день рождения студента
int mes; // месяц рождения студента
int god;
// год рождения студента
};
!
При этом память под него не выделяется!
П РО Г РА М М И РО ВА Н И Е 1
5
6.
Объявления и инициализация структур.Объявление:
Или можно:
const int N = 100; // размер массива
Student a, b; // переменные типа Student
Student m[N]; // массив переменных типа Student
struct {
char fam[30]; // фамилия, строка
char imya[20]; // имя студента
char otch[30]; // отчество студента
int den;
// день рождения студента
int mes; // месяц рождения студента
int god;
// год рождения студента
} a, b; // переменные типа данной структуры
П РО Г РА М М И РО ВА Н И Е 1
6
7.
Объявления и инициализация структур.Объявление нового типа (структуры)
Поля структуры располагаются в
struct date
памяти в том порядке, в котором
{
они объявлены:
int day; // 4 байта
char *month; // 4 байта
int year; // 4 байта
};
date dt;//переменная dt будет занимать12 байта
П РО Г РА М М И РО ВА Н И Е 1
7
8.
Определения размера памятиСтандартная функция sizeof():
printf ("%d\n",sizeof(Student)); // 92 байт
или:
printf ("%d\n",sizeof(a)); // 92 байт
printf ("%d\n",sizeof(m)); // 9200 байт
П РО Г РА М М И РО ВА Н И Е 1
8
9.
Обращение к полям структурыДля обращение к полям структуры используется точечная
нотация:
printf ("%d\n",sizeof(a.fam)); // 30 байт
printf ("%d\n",sizeof(m[0].imya)); // 20 байт
Для обращение к полям струкутуры типа указатель :
printf ("%s\n",dt -> moth);
П РО Г РА М М И РО ВА Н И Е 1
9
10.
ОбъединениеОбъединения – это сложный тип данных, позволяющий
размещать в одном и том же месте оперативной памяти данные
различных типов.
union Имя Объединения
{
тип ИмяОбъекта1;
тип ИмяОбъекта2;
...
тип ИмяОбъектаn;
};
В зависимости от интерпретации осуществляется обращение к
той или другой переменной объединения.
П РО Г РА М М И РО ВА Н И Е 1
10
11.
ОбъединениеПример:
union{
short int name1;
int name2;
long int name3;
} myUnion;
П РО Г РА М М И РО ВА Н И Е 1
Доступ к элементам
myUnion.name1 = 22;
cout << myUnion.name1 << endl;
myUnion.name3 = 222222222;
cout << myUnion.name3 << endl;
//снова обращаемся к name1
cout << myUnion.name1 << endl;
11
12.
ОбъединениеРасположения в памяти переменного нового типа (union)
myUnion схематически можно это представить так:
П РО Г РА М М И РО ВА Н И Е 1
12
13.
Вложенные структуры.Шаблон любой структуры может включать в себя другие
структуры.
Задание. Составит программу для вычисления периметра
треугольника, вершины которых заданы в Декартовой
координатной плоскости Оху.
struct Tochka {
int x;
int y;
};
П РО Г РА М М И РО ВА Н И Е 1
13
14.
Вложенные структуры.T.t1.x = 0; T.t1.y = 3; // 1-я точка (вершина)
T.t2.x = 4; T.t2.y = 0; // 2-я точка (вершина)
T.t3.x = 0; T.t3.y = 0;
// 3-я точка (вершина)
П РО Г РА М М И РО ВА Н И Е 1
14
15.
Массивы и структурыРассмотрим пример использование массива структур в программе:
#include <stdio.h>
Объявления
struct person {
структуры
int age;
char name[20];};
int main(){ setlocale(LC_ALL,"");
person people[]={23,"Виктор",32, "Боходир", 26, "Aзиза", 41,
"Анвар"}; // инициализация массива структур
int n=sizeof(people)/sizeof(people[0]);
for(int i=0; i<n; i++){
printf("Имя:%s \t Возраст: %d \n", people[i].name, people[i].age);
} return 0;}
П РО Г РА М М И РО ВА Н И Е 1
15
16.
Зачем нужно что-то новое?!
Главная проблема – сложность!
• программы из миллионов строк
• тысячи переменных и массивов
Э. Дейкстра: «Человечество еще в древности придумало способ
управления сложными системами: «разделяй и властвуй»».
Структурное программирование:
декомпозиция по
задачам
задача
подзадача 1
подзадача 2.1
подзадача 2
подзадача 2.2
П РО Г РА М М И РО ВА Н И Е 1
подзадача 3
подзадача 2.3
человек мыслит
иначе, объектами
16
17.
Как мы воспринимаем объекты?существенные
свойства
Абстракция – это выделение существенных свойств объекта,
отличающих его от других объектов.
!
П РО Г РА М М И РО ВА Н И Е 1
Разные цели – разные
модели!
17
18.
Использование объектовПрограмма – множество объектов (моделей), каждый из
которых обладает своими свойствами и поведением, но его
внутреннее устройство скрыто от других объектов.
!
Нужно «разделить» задачу на объекты!
А
В
Б
Б1
В1
Б2
В3
Б3
Г
Г1
П РО Г РА М М И РО ВА Н И Е 1
В2
Г2
декомпозиция по
объектам
18
19.
Объектно-ориентированноепрограммирование(ООП)
Это осязаемая сущность, которая чётко
проявляет своё поведение. Объект обладает
состоянием, поведением и идентичностью.
Обект
Абстракция
Класс
П РО Г РА М М И РО ВА Н И Е 1
Выделение существенные особенности
изучаемого объекта и игнорировать
несущественные.
Это множество объектов, обладающих
общей структурой, поведением и
семантикой. Отдельный объект – это
экземпляр класса.
19
20.
Объектно-ориентированное программирование(ООП)объект
Объект состоит из следующих трёх частей:
имя
состояние (переменные
состояния)
методы (операции).
Для взаимодействия друг с другом объекты обмениваются
сообщениями, причём объект, получивший сообщение, может либо
проигнорировать сообщение, либо выполнить содержащуюся в нём
команду (с помощью какого-либо из своих методов).
П РО Г РА М М И РО ВА Н И Е 1
20
21.
ПримерЗрение
Голова
Туловище
Ноги
Человек - примитивный
П РО Г РА М М И РО ВА Н И Е 1
Руки
Умение
держать
предмет
в руках
Могу ходить
21
22.
Классы• программа – множество взаимодействующих объектов
• любой объект – экземпляр какого-то класса
• класс – описание группы объектов с общей структурой и
поведением
отличие от
Класс
структур!
Данные
Методы
состояние
поведение
Поле – это переменная, принадлежащая объекту.
П РО Г РА М М И РО ВА Н И Е 1
22
23.
Описание классаclass <имя>{
[ private: ]
<описание скрытых элементов>
public:
<описание доступных элементов>
};// Описание заканчивается точкой с запятой
private
П РО Г РА М М И РО ВА Н И Е 1
"объекты только этого класса могут
к данному полю".
обращаться
23
24.
Класс «Прямоугольник»Объявление класса:
Объявление переменной
(создание объекта):
class Rect{
float Length;
int Width;
! Память не выделяется!
public:
int Square() {return(Length * Width);}
};
Rect ob;
Попытка изменить данные: ob.Length = 60;
ob.Width = 3;
!
ошибка
private
По умолчанию все члены класса закрытые!
П РО Г РА М М И РО ВА Н И Е 1
24
25.
Класс «Прямоугольник»class Rect{
Объявление класса: private:
public:
! Общедоступные данные!
float Length;
int Width;
int Square() {return(Length * Width);}
};
main()
Основная программа:
{
Rect ob;
ob.Length = 60; // работает!
ob.Width = 3; // работает!
}
П РО Г РА М М И РО ВА Н И Е 1
25
26.
ЗаключениеКласс – это искусственно созданный тип
программистом.
С помощью классов создаются объекты. А с
помощью объектов обращается к полям класса.
Указатель – переменная, которая вместо
значения берет адрес из памяти.
При помощи указателей можно представить и
переработать массивы, функции, структуру,
класс и какие-то объекты.
П РО Г РА М М И РО ВА Н И Е 1
26
27.
ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙИМЕНИ МУХАММАДА АЛ-ХОРАЗМИЙ
СПАСИБО ЗА ВНИМАНИЕ!
АБДУЛЛАЕВА ЗАМИРА
ШАМШАДДИНОВНА
Доцент кафедры Основы
информатики
27