Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






то, что нужно сделать при создании кошки

Type

Koshka=class

Здесь опишем сам макет кошки

end;

Слово type указывает компьютеру, что ниже будет описываться какой-либо тип. В данном случае этот тип – класс. Вот Koshka это имя нашей “библиотеки” которая потребуется для создания кошки. Оно может быть любым. И это не повлияет на то как быстро коте будет создано. Поэтому выберите для себя понятное имя для этого класса, которое будет легко запомнить. После имени (обязательно!) должно следовать равно и слово class, которое говорит компьютеру что мы описываем макет кошки, а не какой либо другой тип, который не является макетом. В конце описания класса надо ставить end, которое нужно для того, чтобы компьютер понял, что описание коте закончилось. Преступим к созданию самого макета. Прежде всего важно понимать, что в классе можно описать практически что угодно, начиная от переменных и заканчивая описанием удаления какой-то кошки. Начнем с первого. В макете переменные называются полями и перед названием переменных не надо ставить слово var. Например, если бы в программе мы описывали переменную g, то описали бы так:

var g: integer;

В классе же это было бы неверным и компилятор зверски ругался на пользователя, который не запомнил, что var не пишется перед переменными в макете. Вот так бы было правильно написать:

g: integer;

Создадим переменные в классе кошки, сначала переменную, хранящую имя кошки, далее возраст и цвет шерсти кошки:

imya, cvet: string;

vozrast: integer;

Все это надо писать сразу после слова class. Будет неправильно “разорвать” описание переменных и массивов описанием какой либо процедуры или функции:

imya: string;

procedure A();

Begin

// ее содержание

end;

vozrast, cvet: integer;

Что же массивами? До массивов мы пока еще не дошли, точнее они для создании кошки не понадобятся, поэтому отложим эту тему на потом. Теперь у нас есть пустой макет кошки. Он ничего не может делать. У него нет ни процедур ни функций. Поэтому сделаем так, чтобы кошка могла сама “родиться на свет”. Для этого обратимся к такому понятию как конструктор. Он создаст кошку, если нам надо кошку, так как нам надо. Например, если мы скажем создай кошку 12-ти летнюю серого цвета имени “Пупсик”, то он это сделает. Но для этого надо будет ему знать в каком порядке спрашивать нас эти данные. Сказать “в любом порядке” нельзя, поскольку это формальный язык. Но описать порядок можно. Хотя можно создать кошку и без вопроса “Как тебя зовут? ” или “Какой у тебя цвет шерсти? ”. Но это не для нас. Порядок параметров (переменных, передающих данные о кошке другим переменным) описывается как и порядок параметров в процедуре или функции. Вот так:

constructor Create();

Begin

то, что нужно сделать при создании кошки

end;

Всегда имя конструктора, то есть процедуры которая создает кошку, должно иметь имя Create. В противном случае работать не будет. И перед именем обязательно должно быть слово constructor, говорящее что дальше описывается процедура-конструктор. В теле конструктора, то есть между операторными скобками, то есть begin и end, может располагаться какой либо код. Например, который присваивает переменным нулевые значения. Для строки ‘’, для чисел 0. Напишем конструктор, который спрашивает у пользователя имя коте, цвет ее шерсти и возраст.

constructor Create(Name: string, Color: string; Age: integer);

Begin

imya: = Name;

vozrast: = Age,

cvet: = Color;

end;

Причем, параметры процедуры или функции необязательно объявлять в виде поля класса. А можно просто писать их имена в описании самой процедуры или функции. Теперь кошку можно будет “родить” в программе. То есть создать объект кошка. Объектом называют экземпляр какого-либо класса. То есть если абстрагироваться, то можно класс ассоциировать с “библиотекой”, а саму кошку с поделкой из глины, которая была создана так, как было сказано в книгах, которые лежали в “библиотеке”. Но как быть, если надо уничтожить коте? Чтобы он не занимал память. Есть такая вещь как деструкторы. Они для этого и предназначены. Деструкторы называются destructor, очень похоже слово на constructor. Их можно представлять как динамит, который разрушает кошку. Деструкторы описываются также как и конструкторы, только надо вместо constructor писать destructor. Вот так:

destructor Ubit();

Begin

end;

Макет кошки готов. А как же использовать этот класс? Для этого надо понимать, что чтобы у нас “родилась” кошка надо создать что-нибудь что позволит ее “родить”. Это что-нибудь можно будет сделать как с помощью переменных, так и с помощью массивов. Для нас будет предпочтительнее первый случай, потому что он более простой. Но потом мы изучим и второй. И так, объявим переменную в программе типа Koshka. То есть напишем в коде программы следующее:

var Cat: Koshka;

Но это только первый шаг в создании кошки. Есть второй шаг – создать саму кошку. То есть сделать так, чтобы она появилась в реальности. Ну, конечно, реальности той, которую мы сами создадим для компьютера. Ведь, после объявления переменной мы имеем образ будущей кошки, зарисовку, а не ее саму. Чтобы создать ее саму потребуется слово new, которое укажет компьютеру, что надо создать именно саму кошку. Или говоря на языке программистов создать объект (экземпляр класса) кошку. Это делается так. Сначала пишется имя “зарисовки” кошки, то есть имя переменной Cat, которая является заготовкой для будущей кошки. зарисовки потому что экземпляр класса еще не создан. А потом пишется знак присваивания, new и имя класса. Далее в скобках вам надо будет указать параметры конструктора этого класса в том же порядке, в каком они написаны в конструкторе. Только вот у нас это имя Koshka. И нельзя сделать так, чтобы переменная была классов собаки, а создавалась кошка из этого класса. Говоря проще, имена классов у объявленной переменной и после new, если у нее создается экземпляр, класса должны совпадать:

Cat: = new Koshka(‘Паша’, ’оранжевый’, 12);

Это у нас получилась кошка с именем Паша, оранжевым цветом шерсти и возрастом 12 лет. Если обобщить, то схема создания кошки была такова:

Структуру класса можно отразить этой схемой:

Заметьте, что “зарисовка”, “библиотека”, “поделка из глины” это просто сравнения. Поэтому не надо говорить в программировании, что это зарисовка собаки или чего-нибудь еще. Это будет неправильно. Это просто аналогия с окружающей вас реальностью.

Методы

В реальной жизни мы каждый день встречаемся с действиями. Например, когда идем в школу или на работу. Каждый день мы моем руки перед едой. То есть совершаем некоторую цепочку действий. Причем, таких цепочек у нас великое множество. Например, фраза “Напиши что-нибудь” подразумевает несколько действий. Взять ручку, написать что-нибудь. А во время написания надо тоже двигать как-нибудь ручкой чтобы получились буквы. Это еще одна цепочка действий. И она называется “напиши”. Для компьютера можно описывать такие цепочки, причем самому придумывать им имена. Если в реальной жизни у нас есть только цепочки действий и нельзя это понятие “цепочка” на что-нибудь еще разделить. То в программировании это возможно. Такие последовательности действий делятся на 2 группы – процедуры и функции. Чем же процедуры отличаются от функций? И где уместнее использовать одни, а где другие? Ответ для этого вопроса будет понятен для вас. Процедуры это цепочки действий, которые ничего просто так не отдают. То есть нельзя присвоить переменной значение результата выполненной процедуры. Хотя обмениваться данными между программой и процедурами можно. Для этого надо чтобы процедура как то взаимодействовала с глобальными переменными. То есть переменными, которые видимы из любой части программы. Потому что если процедура работает только с локальными переменными, которые исчезают после завершения работы процедуры, обмена не получится. Поэтому используйте для обмена глобальные переменные. Если говорить о функциях, то отличие их от процедур состоит в том, что они отдают свой результат без проблем. То есть можо написать имя переменной, присвоить и имя функции и она вернет результат переменной. Точнее, переменой будет присвоен результат в виде какого либо значения выполнения команд в ней. Методы это те же самые процедуры и функции. Только они описываются в самом классе. В классе кошка может быть метод для изменения имени.

procedure ChangeName(n: string);

Begin

imya: =n;

end;

Если понадобиться предописание функции или процедуры в классе пишите просто процедуру или функцию без ее содержания. То есть, если это procedure то пишите procedure, далее имя процедуры, потом в скобках параметры. Если же это функция, то пишите все как у процедуры, только слово procedure замените на function и после последней скобки после параметров напишите двоеточие и тип возвращаемого результата. Не будем больше вдаваться в подробности описания функций и процедур. Повторю лишь, что они описываются также как и вне класса.

Модификаторы видимости

<== предыдущая лекция | следующая лекция ==>
Технология строительных процессов погрузчика | Валовые (общие) издержки




© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.