Программирование Mac OS. История возникновения Архитектура Инструменты разработки Язык Библиотеки План.

Презентация:



Advertisements
Похожие презентации
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Advertisements

Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Высокоуровневые методы информатики и программирования Лекция 14 Интерфейсы.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
8 класс 1960 года Классный рук-ль: Пикалёва В.Г..
MacOSX глазами программиста Антонов Алексей
Ассоциативные списки Поиск данных происходит не по индексу или положению объекта, а по его ассоциативной связи: public interface Map { // Доступ к объектам.
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Объектно-ориентированный подход в языке C#. Класс в языке C# - ссылочный тип, определенный пользователем. Для классов ЯП C# допустимо только единичное.
САОД кафедра ОСУ 1 Основные абстрактные типы данных Схема процесса создания программ для решения прикладных задач ВУ.
Инкапсуляция полей и констант в языке C# (1) Поле: - инициализация факультативна, однако запрещен доступ к полям и методам того же типа; - поля структуры.
Классы в С#. Перечисления С# Перечисление задает конечное множество возможных значений, которые могут получать объекты класса перечисление. [атрибуты][модификаторы]
Объектно-ориентированное программирование С++. Лекция 6 Карпов В.Э.
Объектная модель Ruby Денис С. Мигинский. Основные характеристики объектной модели Обязательные: Поддержка классов Поддержка описания поведения класса.
Язык Python Универсальный язык программирования Интерпретируемый язык.
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
История создания ОС. Семейство ОС MS Windows.. Операционная система базовый комплекс компьютерных программ, обеспечивающий управление аппаратными средствами.
Статические поля класса Статические поля хранят данные, общие для всех элементов класса. Статическое поле существует в единственном экземпляре для всех.
ООП Классы Данные отдельно, методы отдельно struct Node { Node* next; void* data; }; struct List { Node* first; int size; }; void* allocate() { … } void.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Транксрипт:

Программирование Mac OS

История возникновения Архитектура Инструменты разработки Язык Библиотеки План

Steven Jobs & Stephen Wozniak

История Apple 1976 – появился Apple I 1977 – выпуск Apple I I 1979 – начинается работа над Macintosh 1982 – годовой доход превышает $1 млрд 1984 – в продажу выходит Macintosh 1985 – Jobs уходит и основывает NeXT 1991 – первый ноутбук (PowerBook) 1992 – IBM и Apple создают PowerPC 1995 – годовой доход превышает $11 млрд 1996 – Apple покупает NeXT за $430 млн

История Apple 1997 – Jobs возвращается 1998 – первый iMac 2000 – Aqua интерфейс Март 2001 – Apple выпускает Mac OS X (Cheetah) и первый iPod Сентябрь 2001 – Mac OS 10.1 (Puma) Август 2002 – Mac OS 10.2 (Jaguar) Октябрь 2003 – Mac OS 10.3 (Panther) Апрель 2005 – Mac OS 10.4 (Tiger) Октябрь 2007 – Mac OS 10.5 (Leopard) Август 2009 – Mac OS 10.6 (Snow Leopard)

Mac OS 1 (1984)

Mac OS 6 (1988)

Mac OS 7 (1991)

Mac OS 7.5 (1994)

Mac OS 8.5 (1998)

Mac OS 9 (1999)

Mac OS 10 (2001)

Mac OS 10.6 (2009)

Hackintosh (2006) Mac OS и старше Патчи к XNU

MessagePad

MessagePad & iPhone

Особенности Mac OS X Darwin: XNU + набор драйверов и утилит XNU: ядро Mach + BSD API Фреймворки Cocoa, Carbon и Java Технологии QuickTime, Quartz и OpenGL Тема Aqua

Архитектурная модель Aqua Darwin QuartzOpenGLQuickTime CarbonCocoaJava GUI Фреймворки Технологии Ядро

XNU = Mach + BSD Mach: - виртуальная память - RPC - вытесняющее планирование и SMP - защита памяти - IPC BSD: - POSIX интерфейс - сигналы - стек TCP\IP - VFS

И еще раз…

Toolkit GCC GDB Make Libtool Otool

Компиляция из командной строки

Bundle

XCode

Interface Builder

developer.apple.com

Objective-C Надмножество С Очень простой язык, но новый синтаксис Одиночное наследование, единый базовый класс Есть понятие интерфейса (абстрактный класс) Методы бывают либо виртуальные либо статические Слабо типизирован

Objective-C Новые типы: - анонимный объект (id) - класс (Class) - селектор (SEL) Синтаксис объявления и определения класса Синтаксис вызова метода

Objective-C Все динамично: - объекты создаются в куче - нет стековых объектов Методы связываются динамически Присутствует интроспекция

Создание объекта из класса

Objective-C Классы определяют состояние и поведение Состояние определяется инвариантами Поведение – методами Менять состояние можно методами доступа (accessors)

Objective-C Объекты отвечают на методы объекта: - (id)init; - (float)height; - (void)walk; Классы отвечают на методы классов: + (id)alloc; + (id)person; + (Person *)sharedPerson;

Objective-C Синтаксис вызова метода (посылки сообщения): [receiver message] [receiver message: argument] [receiver message: arg1 andArg: arg2]

Objective-C Пример: Person *voter = [[Person alloc] init]; int age = [voter age]; [voter setAge: 21] if ([voter canLegallyVote]) {/*do smth*/} [voter NSString *name = [[voter spouse] name];

Objective-C Точечный синтаксис (ObjC 2.0): float height = [person height]; float height = person.height; [person setHeight: newHeight]; person.height = newHeight; [[person child] setHeight: newHeight]; person.child.height = newHeight;

Objective-C Нулевой указатель: if (nil == person) return; if (!person) return; person = nil; [button setTarget: nil]; person = nil; [person die];

Objective-C Макросы для типа BOOL: BOOL flag = NO; if (flag) return; else flag = YES flag = 1; if (flag) return; else flag = 0;

Objective-C Тип SEL как указатель на метод: SEL action = [button action]; [button Для методов из нескольких слов: - (void)setName: (NSString *)name age: (int)age; SEL sel

Objective-C Можно определить, отвечает ли объект на некоторое сообщение: id obj; SEL selector if ([obj respondsToSelector: selector]) [obj performSelector: selector withObjects: self];

Objective-C Сравнение указателей: if (obj1 == obj2) exact object instance); Сравнение состояний: if ([obj1 isEqual: obj2]) equivalent);

Objective-C Специальный метод-описание: - (NSString *)description; Используется в форматной строке: [NSString description: myObject]; NSLog([anObject description]);

Foundation Framework Содержит классы для АТД Задачи, таймера, нити Работа с файлами, IPC, bundle NSObject: - всеобщий базовый класс - управление памятью - сравнение объектов - интроспекция

Foundation Контейнеры NSArray - упорядоченный массив объектов NSDictionary – ключ-значение NSSet – множество уникальных объектов Единый механизм перечисления Константные и изменяемые классы NSMutableArray, NSMutableDictionary, NSMutableSet

Foundation Контейнеры Перечисление элементов контейнера: NSArray *colors = @Green, nil]; NSString *color; int count = [colors count]; for (i = 0; i < count; ++i ) //old style { color = [array objectAtIndex: i]; NSLog(color); } for (Color *color in colors ) //new style NSLog(color);

Файлы описания классов

Объявление класса

Определение методов доступа

Вызов собственных методов

Вызов методов родителя self – аналог this super – псевдоним объекта-родителя - (void)doSomething { [super doSomething]; //… }

Создание объекта + alloc – выделение памяти для объекта некоторого класса (увеличивается счетчик ссылок) - init – вызов конструктора MyClass *object = [[MyClass alloc] init];

Реализация конструктора

Сбалансированные вызовы

Управление памятью

Реализация деструктора

Вопросы?