1.76M
Категория: ПрограммированиеПрограммирование

Структура и объединение. Основы объектно - ориентированного программирования (тема 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
English     Русский Правила