Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обработки данных"

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обработки данных" - Presentation Transcript

    1. Хакасский государственный университет им. Н.Ф. Катанова Структуры и алгоритмы обработки данных Лекция: Абстрактные типы данных Николай Гребенщиков, www.grebenshikov.ru
    2. Основные понятния • Тип данных • Структура данных • Абстрактный тип данных • Класс 1
    3. Тип данных переменной - множество значений, которые может принимать эта переменная. Java-код: 1 int a = 5; 2 double b = 0.5; 3 string c = ‘‘abc’’; 4 boolean d = true; 2
    4. Структура данных - набор переменных, возможно, различ- ных типов данных, объединенных определенным образом. Структура данных создается путем задания имени совокуп- ности (или агрегату) ячеек. Ячейка является базовым блоком структуры данных, кото- рая предназначена для хранения значения определенного ба- зового или составного типа. 3
    5. Фундаментальные структуры данных • Массив • Запись • Файл 4
    6. Массив - последовательность ячеек определенного типа. Код на Java: 1 int a[] = new int[5]; 2 boolean d[] = new boolean[5]; d: 1 2 3 4 5 true false true true false d[3] = false 5
    7. Запись - это ячейка, состоящая из нескольких ячеек (по- лей), значение которых могут быть разных типов. Код на C++: 1 struct Student { 2 string name; 3 string lastName; 4 int yearOfEntrance; 5 } 6 struct Student s; 7 s.name=’’Иван’’; s.lastName=’’Петров’’; 8 s.yearOfEntrance=2009; s: name lastName yearOfEntrance Иван Петров 2009 6
    8. Файл(Поток) - это последовательность значений опреде- ленного типа, доступ к которой осуществляется последова- тельным способом. 7
    9. Указатель - ячейка, чьё значение указывает на другую ячей- ку, то есть содержит адрес другой ячейки в памяти. Курсор - ячейка с целочисленным значением, используемая для указания на ячейку массива. 8
    10. Код на C++: 1 struct S1 { int cursor; struct S1 * pointer; } 2 struct S2 { double data; int cursor; } 3 1 0 1.2 3 1 3.4 -1 2 5.6 1 3 7.8 0 9
    11. Абстрактный тип данных (АТД) - математическая модель с совокупностью операторов, определенных в рамках этой модели. Например, АТД “Множество” имеет операторы: • объединение; • пересечение; • разность и другие. 10
    12. Реализация АТД на языке программирования подразу- мевает: • описание АТД с помощью операторов языка программи- рования; • определение переменных; • написание процедуры для каждого из операторов АТД. 11
    13. Структурный подход • данные описываются структурами данных; • операторы АТД реализуются с помощью функций и про- цедур. Код на C++: 1 //определение структуры данных 2 struct IntSet { int elements[100]; } 3 //определение оператора объединения 4 void union(struct IntSet * s1, struct IntSet * s2); 5 //определение оператора пересечения 6 void intersect(struct IntSet * s1, struct IntSet * s2); 12
    14. Объектный подход Данные и операторы объединяются в объект! 13
    15. Объект: некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеет заданные атрибуты и операций над ними. 14
    16. Класс определяет скрытую внутреннюю структуру некото- рого значения, а также набор операций, применимых к дан- ному значению. • данные описываются полями класса; • операторы АТД реализуются с помощью методов класса. Экземпляр класса есть объект! 15
    17. Объектный подход Код на Java: 1 class IntSet { 2 public int elements[]; 3 public void union(IntSet s); 4 public void intersect(IntSet s); 5 } 16
    18. Необходимое нам из ООП • конструктор; • интерфейс; • инкапсуляция; • шаблон; 17
    19. Конструктор 1 class IntSet { 2 public int elements[]; 3 public IntSet(int els[]) { 4 elements = els; 5 } 6 ... 7 } 8 int a[] = new int[10]; 9 IntSet set = new IntSet(a); 18
    20. Интерфейс 1 interface Set { 2 void union(Set s); 3 void intersect(Set s); 4 } 5 class IntSet implements Set { 6 public int elements[]; 7 public IntSet(int els[]) { 8 elements = els; 9 } 10 public void union(Set s) { ... } 11 public void intersect(Set s) { ...} 12 ... 13 } 19
    21. Инкапсуляция 1 class IntSet { 2 private int elements[]; 3 private void someFunction() { ... } 4 public union(IntSet s) { ... } 5 ... 6 } 20
    22. Шаблон 1 class TemplatedSet<T> { 2 private T elements[]; 3 public IntSet(T els[]) { 4 elements = els; 5 } 6 ... 7 } 8 9 Integer a[] = new Integer[10]; 10 TemplatedSet<Integer> set = new TemplatedSet<Integer>(a); 21
    23. Список литературы • Ахо А., Хопкрофт Д., Ульман Д. Структуры данных и алгоритмы. - М. : Издательский дом “Вильямс”, 2000. сс.23-28. • Бьерн Страуструп. Язык программирования С++. Специ- альное издание. - СПб. : Бином, Невский диалект, 2008. • Java SE Documentation. http://java.sun.com/javase/reference/api.jsp 22
    SlideShare Zeitgeist 2009

    + Nikolay GrebenshikovNikolay Grebenshikov Nominate

    custom

    117 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 117
      • 117 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories