Объективное программирование

    Дисциплина: Программирование
    Тип работы: Реферат
    Тема: Объективное программирование

    ВВЕДЕНИЕ

    ОБЪЕКТНОЕ ПРОГРАММИРОВАНИЕ

    Лекция 1. Объектное программирование как технология программирования

    -------------------------------------------------------------

    Традиционная технология программирования 70-х годов - структурное программирование:

    - структурное проектирование процедур и данных (программирование без goto).

    Язык Паскаль

    - соответствует указанным принципам и был разработан под влиянием идей структурного программирования.

    Альтернативный подход - восходящее программирование -

    предполагает в простейшем случае создание слоя структур данных и процедур,

    обеспечивающих полный набор действий над объектами, которые представлены в данной задаче.

    Пример традиционного подхода библиотека стандартных функций.

    Следующий шаг - введение в программу объектов.

    Под объектом

    понимается структура данных, которая содержит полную информацию о

    состоянии соответствующего физического объекта, который отображается

    программой.

    Си

    этому

    может

    соответствовать структура

    struct),

    в Паскале - запись (record). Множество объектов одного

    типа составляют понятие класса. Объектно-ориентированный подход к

    разработке программ предполагает, что в программе устанавливается

    взаимно-однозначное

    соответствие

    между

    физическими

    объектами,

    отображаемыми программой,

    и програмнными объектами, являющимися,

    по

    существу,

    структурированными

    переменными

    (в дальнейшем под

    термином \"объект\" будем понимать программный объект).

    Традиционный подход:

    ----------

    переменная

    тип данных

    Объектно-ориентиро-

    физический

    программный

    класс

    ванный подход:

    объект

    объект

    объектов

    При создании объектов программист определяет множество функций,

    при помощи которых (а точнее,

    исключительно через которые)над объектом выполняется некоторое допустимое множество операций.

    Такие функции должны иметь обязательный параметр - ссылку на

    текущий объект,

    для которого они вызываются. Сами функции являются

    неотъемлимой частью понятия класса объектов,

    так как они определяют

    возможные

    действия над объектами одного и того же типа (то

    есть класса).

    Объектно-ориентированные программы можно разрабатывать

    помощью

    традиционных языков программирования.

    Рассмотрим пример

    определения объектов типа \"дата\" на классическом Си.

    //------ структура dat - аналог класса объектов \"дата\" --------typedef struct dat

    //----- набор функций для класса объектов \"дата\" --------------static

    //----- Проверка

    на корректность -----------------------------int

    TestData(p)

    if (p-

    if (p-12 ||

    month])

    return(1);

    //------ Следующая дата ----------------------------------------void

    NextData(p)

    if (p-

    if (p-

    if (p-

    //------- Следующая дата через n дней --------------------------void

    PlusData(p,n)

    while (n-- !=0) NextData(p);

    //------- Основная программа ---------------------------------

    void main()

    DAT a;

    while(TestData(

    PlusData(

    //--------------------------------------------------------

    Фактически определение класса объектов как типа данных и известного набора функций для выполнения операций

    над

    переменными

    этого

    типа эквивалентно понятию базового типа данных (БТД) языка

    программирования.

    Единственное отличие класса от БТД заключается

    в том,

    что первый определяется программистом, а второй встроен в

    определение языка программирования.

    Язык программирования

    Си++

    представляет

    собой

    расширение

    языка Си для программирования объектов и

    их

    классов.

    При

    этом

    использование классов эквивалентно вплоть до синтаксиса использованию базовых типов данных:

    Понятия классического

    Си

    Понятия Си++

    -------------------------

    ----------- БТД:

    Класс:

    элемент данных языка, для

    определяемая пользователем

    которого известно множество

    структура, элементы которой

    значений, форма представления,

    являются

    ранее

    определен набор операций.

    ными типами данных и классами,

    и множества функций,оперирующих с ним.

    --------------------------------------------------------- Переменная:

    Объект:

    область памяти, содержащая

    переменная, содержащая

    структуру данных определенного

    структуру данных, определенную

    типа.

    как

    класс.

    --------------------------------------------------------- Операция:

    Переопределение

    операторов:

    операция над переменной интер-

    функция, определенная для объек претируется по отношению к тому

    тов указанного класса может быть

    БТД, к которому относится пере-

    вызвана в виде одной из стандарт менная (так операция \'+\'

    ных операций языка Си, которая

    по-разному интерпретируется для

    переопределяется, если операндом

    переменных типа int и double).

    ее является объект класса, а не

    переменная БТД.

    Лекция 2. Дополнительные возможности языка

    Си++

    -----------------------------------------------

    Ниже рассмотрим средства,

    расширяющие классический Си. Хотя

    они и не относятся непосредственно к классам,

    с их помощью можно

    реализовать рассмотренные выше принципы объектно-ориентированного

    программирования.

    2.1. Присваивание структур

    -------------------------

    Операция присваивания может быть применена к структурам

    одного типа.

    В этом случае предполагается их побайтное копирование

    одной в другую.

    Она (а не ссылка на нее) может быть также фактическим

    параметром и результатом функции.

    Если имеется ссылка на

    структуру с именем p,

    то результатом операции *p является структура в целом. Таким образом, структура приближается к базовым типам данных в том смысле,

    что над ней возможны вышеуказанные операции.

    Для

    обозначения

    структуры

    можно также использовать имя

    структуры без ключевого слова struct.

    struct dat

    { int

    NextDat(dat x)

    // Формальный параметр - структура

    { ...

    // Возвратить структуру как результат

    Nextdat1(dat *p)

    { ...

    // Возврат структуры косвенно по ссылке

    // Ключевое слово struct не используется

    void

    main()

    a = b;

    // Прямое присваивание структур

    a = *q;

    // Косвенное присваивание по ссылке

    c = NextDat(b);

    // Присваивание структуры как результата

    c = NextDat1(

    // функции, фактический параметр в

    // NextDat - копия

    структуры

    2.2. Обращения по адресу (неявная ссылка)

    ----------------------------------------

    При работе со структурами большого размера - при передаче их

    качестве параметров и результатов функций - копирование их является неэффективной операцией.

    Гораздо

    эффективнее

    передавать

    ссылку на эту структуру.

    Для того,

    чтобы постоянно не указывать

    операции взятия адреса и косвенного обращения по

    ссылке

    Си++

    введен

    тип

    - неявная ссылка:

    при определении переменной неявно

    вводится ссылка,

    указывающая на

    эту

    переменную.

    Использование

    этой переменной в большинстве операций предполагает косвенное обращение по соответствующей ссылке.

    При инициализации такой переменной значением другой переменной создается ссылка на эту другую

    переменную.

    При использовании в любом выражении переменной - неявной

    ссылки реально производится косвенное обращение по созданной ссылке.

    Си++

    Эквивалент в \"классическом\" Си

    ------------------------

    -----------------------------//--------------- Инициализация константой

    -----------------in...

    Забрать файл

    Похожие материалы:


ПИШЕМ УНИКАЛЬНЫЕ РАБОТЫ
Заказывайте напрямую у исполнителя!


© 2006-2016 Все права защищены