Другие статьи

Цель нашей работы - изучение аминокислотного и минерального состава травы чертополоха поникшего
2010

Слово «этика» произошло от греческого «ethos», что в переводе означает обычай, нрав. Нравы и обычаи наших предков и составляли их нравственность, общепринятые нормы поведения.
2010

Артериальная гипертензия (АГ) является важнейшей медико-социальной проблемой. У 30% взрослого населения развитых стран мира определяется повышенный уровень артериального давления (АД) и у 12-15 % - наблюдается стойкая артериальная гипертензия
2010

Целью нашего исследования явилось определение эффективности применения препарата «Гинолакт» для лечения ВД у беременных.
2010

Целью нашего исследования явилось изучение эффективности и безопасности препарата лазолван 30мг у амбулаторных больных с ХОБЛ.
2010

Деформирующий остеоартроз (ДОА) в настоящее время является наиболее распространенным дегенеративно-дистрофическим заболеванием суставов, которым страдают не менее 20% населения земного шара.
2010

Целью работы явилась оценка анальгетической эффективности препарата Кетанов (кеторолак трометамин), у хирургических больных в послеоперационном периоде и возможности уменьшения использования наркотических анальгетиков.
2010

Для более объективного подтверждения мембранно-стабилизирующего влияния карбамезапина и ламиктала нами оценивались перекисная и механическая стойкости эритроцитов у больных эпилепсией
2010

Нами было проведено клинико-нейропсихологическое обследование 250 больных с ХИСФ (работающих в фосфорном производстве Каратау-Жамбылской биогеохимической провинции)
2010


C использованием разработанных алгоритмов и моделей был произведен анализ ситуации в системе здравоохранения биогеохимической провинции. Рассчитаны интегрированные показатели здоровья
2010

Специфические особенности Каратау-Жамбылской биогеохимической провинции связаны с производством фосфорных минеральных удобрений.
2010

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

В статье описана методология объектно-ориентированного программирования, даны принципиальные отличия объектно-ориентированного проектирования от  традиционного структурного проектирования. 

Объектно-ориентированная методология применима к широкому спектру объектных и объектно- ориентированных  языков  и  не  ограничена  каким-либо  одним  языком  программирования.      Наряду с анализом и проектированием, несомненно важны особенности конкретного языка программирования. Как отметил Страуструп, язык программирования служит трем целям:

  • это инструмент проектирования;
  • это средство человеческого восприятия;
  • это средство управления компьютером [1]. 

Существует множество программ, которые разрабатываются, сопровождаются и используются одним и тем же человеком. Обычно это начинающий программист или профессионал, работающий изолированно. Такие системы, как правило, имеют очень ограниченную область применения и короткое время жизни. Их лучше заменить новыми, чем пытаться повторно использовать, переделывать или расширять.

Существуют и другие системы, которые называются промышленными программными продуктами. Они применяются для решения самых разных задач. Это системы с обратной связью, которые управляют событиями физического мира и для которых ресурсы времени и памяти ограничены. Это могут быть системы управления и контроля за реальными процессами, например, диспетчеризация воздушного или железнодорожного транспорта. В зависимости от нормального функционирования, системы подобного типа обычно имеют большое время жизни и большое количество пользователей. В мире промышленных программ встречаются среды разработки, которые упрощают создание приложений в конкретных областях, и программы, которые имитируют определенные стороны человеческого интеллекта. Существенная черта промышленной программы – высокий уровень сложности. Один разработчик практически не в состоянии охватить все аспекты такой системы.

Проблемы, которые решаются с помощью программного обеспечения, часто неизбежно содержат сложные элементы, а к соответствующим программам предъявляется множество различных требований. Часто в процессе разработки возникают дополнительные сложности в результате изменений требований к программной системе. В основном требования корректируются из-за того, что само осуществление программного проекта часто изменяет проблему. Использование системы после того, как  она разработана и установлена, заставляет пользователей лучше понять и отчетливей сформулировать то, что им действительно нужно. Этот процесс повышает квалификацию разработчиков в предметной области и позволяет им прояснить темные места в проектируемой системе.

Объектно-ориентированная технология основывается на так называемой объектной модели. Основными ее принципами являются: абстрагирование, инкапсуляция, модульность, иерархичность, типизация, сохраняемость.  Эти  принципы  не  новы,  но  в  объектной модели  они  впервые применены в совокупности.

Объектно-ориентированный анализ и проектирование принципиально отличаются от традиционных подходов   структурного    проектирования.    Архитектура    получающегося    программного    продукта в значительной степени выходит за рамки представлений, традиционных для структурного программирования. Процесс декомпозиции здесь нужно представлять по-другому. Отличия обусловлены тем, что структурное проектирование основано на структурном программировании, тогда как в основе объектно-ориентированного проектирования лежит методология объектно-ориентированного программирования.

Понятие «объект» впервые было использовано более 20 лет назад при конструировании компьютеров с descriptor-based и capability-based архитектурами [2]. В этих работах делались попытки отойти от традиционной архитектуры фон Неймана и преодолеть барьер между высоким уровнем программной абстракции и низким уровнем ЭВМ. Были созданы более качественные средства, обеспечивающие:

  • лучшее выявление ошибок;
  • большую эффективность реализации программ;
  • сокращение набора инструкций;
  • упрощение компиляции;
  • снижение объема требуемой памяти.

Объектно-ориентированное программирование (ООР) - это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования. В данном определении можно выделить три части:

  • OOP использует в качестве базовых элементов объекты, а не алгоритмы;
  • каждый объект является экземпляром какого-либо определенного класса;
  • классы организованы иерархически.

Программа будет объектно-ориентированной только при соблюдении всех трех указанных требований. Программирование,  не  основанное  на  иерархических  отношениях,  не  относится  к OOP, а называется программированием на основе абстрактных типов данных.

Страуструп определил так: «если термин объектно-ориентированный язык вообще что-либо означает, то он должен означать язык, имеющий средства хорошей поддержки объектно- ориентированного стиля программирования... Обеспечение  такого стиля  в свою  очередь означает,  что в языке удобно пользоваться этим стилем. Если написание программ в стиле OOP требует специальных усилий или оно невозможно совсем, то этот язык не отвечает требованиям OOP» [1]. В соответствии с этим не все языки программирования являются объектно-ориентированными. Теоретически возможна имитация объектно-ориентированного программирования на обычных языках, таких, как Pascal или Ассемблер, но это крайне затруднительно.

Объектная модель принципиально отличается от моделей, которые связаны с более традиционными методами структурного анализа, проектирования и программирования. Объектная модель не требует отказа от всех ранее найденных и испытанных временем методов и приемов. Она вносит некоторые новые элементы, которые добавляются к предшествующему опыту. Объектный подход обеспечивает ряд существенных удобств, он позволяет создавать системы, которые удовлетворяют признакам хорошо структурированных сложных систем. Использование объектного подхода существенно  повышает уровень унификации разработки и пригодность для повторного использования не только программ, но и проектов, что в конце концов ведет к созданию среды разработки. Объектно-ориентированные системы часто получаются более компактными, чем их не объектно-ориентированные эквиваленты. Это означает не только уменьшение объема кода программ, но и удешевление проекта за счет использования предыдущих разработок, что дает выигрыш в стоимости и времени. Также, использование объектной модели приводит к построению систем на основе стабильных промежуточных описаний, что упрощает процесс внесения  изменений.  Это  дает  системе  возможность  развиваться  постепенно  и  не приводит к полной ее переработке даже в случае существенных изменений исходных требований. Объектный подход состоит из ряда хорошо продуманных этапов проектирования, что также  уменьшает степень риска и повышает уверенность в правильности принимаемых решений.

С точки зрения восприятия человеком объектом может быть [3]:

  • осязаемый и видимый предмет;
  • нечто, воспринимаемое мышлением;
  • нечто, на что направлена мысль или действия.

Таким образом, объект моделирует часть окружающей действительности и существует во  времени и пространстве. Объектами реального мира не исчерпываются типы объектов, интересные при проектировании программных систем. Другие важные типы объектов вводятся на этапе проектирования, и их взаимодействие друг с другом служит механизмом отображения поведения более высокого уровня. Объект представляет собой конкретный опознаваемый предмет, единицу или сущность (реальную или абстрактную), имеющую четко определенное функциональное назначение в данной предметной области. Объект обладает состоянием, поведением и идентичностью. Структура и поведение схожих объектов определяет общий для них класс. Термины «экземпляр класса» и «объект» взаимозаменяемы.

Состояние объекта характеризуется перечнем (обычно статическим) всех свойств данного   объекта и текущими (обычно динамическими) значениями каждого из этих свойств.

К числу свойств объекта относятся присущие ему или приобретаемые им характеристики, черты, качества или способности, делающие данный объект самим собой. Например, для лифта характерным является то, что он сконструирован для поездок вверх и вниз, а не горизонтально. Тот факт, что всякий объект имеет состояние, означает, что всякий объект занимает определенное пространство (физически или в памяти компьютера).

Предположим, что на языке C++ нам нужно создать регистрационные записи о сотрудниках. Можно сделать это следующим образом:

struct PersonnelRecord {

char name[100];

int socialSecurityNumber; char department[10];

float salary;

};

Каждый компонент в приведенной структуре обозначает конкретное свойство абстракции регистрационной записи. Описание определяет не объект, а класс, поскольку оно не вводит какой-либо конкретный экземпляр. Это описание определяет структуру в C++, семантика которой соответствует классу, у которого все поля открыты. Таким образом, структуры - это неинкапсулированные абстракции. Для того чтобы создать объекты данного класса, необходимо написать следующее: 

PersonnelRecord deb, dave, karen, jim, torn, denise, kaitlyn, krista, elyse; 

В данном случае объявлено девять различных объектов, каждый из которых занимает определенный участок в памяти. Хотя свойства этих объектов являются общими (их состояние представляется единообразно), в памяти объекты не пересекаются и занимают каждый свое место. На практике принято ограничивать доступ к состоянию объекта, а не делать его общедоступным, как в предыдущем определении класса. С учетом сказанного, изменим данное определение следующим образом: 

class PersonnelRecord { public:

char* employeeName() const;

int employeeSocialSecurityNumber() const; char* employeeDepartment() const; 

protected: 

char name[100];

int socialSecurityNumber; char department[10];

float salary;

}; 

Новое определение несколько сложнее предыдущего, но по ряду соображений предпочтительнее. Предложенное определение класса PersonnelRecord - это не лучший пример. Здесь только показана семантика состояния класса. Иметь в классе функцию, которая возвращает значение char*, часто опасно, так как это нарушает парадигму защиты памяти. Если метод отводит себе память, за которую получивший к ней доступ клиент не отвечает, результатом будет замусоривание памяти. В системах предпочтительнее использовать параметризованный класс строк переменной длины, который можно найти в базовой библиотеке классов. Классы - это больше чем структуры из C++. В частности, в новом определении реализация класса скрыта от других объектов. Если реализация класса будет в дальнейшем изменена, код придется перекомпилировать, но семантически клиенты не будут зависеть от этих изменении (то есть их код сохранится). Кроме того, решается также проблема занимаемой объектом памяти за счет явного определения операций, которые разрешены клиентам над объектами данного класса. У всех клиентов этой системы есть право узнать имя, код социальной защиты и место работы сотрудника. Но только особым клиентам (а именно, подклассам данного класса)  разрешено устанавливать значения указанных параметров. Только этим специальным клиентам разрешен доступ к сведениям о заработной плате. Достоинством данного определения является возможность его повторного использования.

В настоящее время объектно-ориентированное проектирование - единственная методология, позволяющая справиться со сложностью, присущей многим системам.

 

Литература

  1. Страуструп Б. Язык программирования С++, специальное издание / Перевод с англ. - М.; СПб.: Издательство БИНОМ, 2001. - 1099 с.
  2. Кристиан Нейгел, Билл Ивьен, С#4 и платформа. NET для профессионалов. - Москва, Санкт- Петербург, Киев: Диалектика, 2011. - 1435 с.
  3. Карли Уотсон, КVisual C# 2010. Полный курс. - Москва: Вильямс, 2010. - 985 с.

Разделы знаний

Архитектура

Научные статьи по Архитектуре

Биология

Научные статьи по биологии 

Военное дело

Научные статьи по военному делу

Востоковедение

Научные статьи по востоковедению

География

Научные статьи по географии

Журналистика

Научные статьи по журналистике

Инженерное дело

Научные статьи по инженерному делу

Информатика

Научные статьи по информатике

История

Научные статьи по истории, историографии, источниковедению, международным отношениям и пр.

Культурология

Научные статьи по культурологии

Литература

Литература. Литературоведение. Анализ произведений русской, казахской и зарубежной литературы. В данном разделе вы можете найти анализ рассказов Мухтара Ауэзова, описание творческой деятельности Уильяма Шекспира, анализ взглядов исследователей детского фольклора.  

Математика

Научные статьи о математике

Медицина

Научные статьи о медицине Казахстана

Международные отношения

Научные статьи посвященные международным отношениям

Педагогика

Научные статьи по педагогике, воспитанию, образованию

Политика

Научные статьи посвященные политике

Политология

Научные статьи по дисциплине Политология опубликованные в Казахстанских научных журналах

Психология

В разделе "Психология" вы найдете публикации, статьи и доклады по научной и практической психологии, опубликованные в научных журналах и сборниках статей Казахстана. В своих работах авторы делают обзоры теорий различных психологических направлений и школ, описывают результаты исследований, приводят примеры методик и техник диагностики, а также дают свои рекомендации в различных вопросах психологии человека. Этот раздел подойдет для тех, кто интересуется последними исследованиями в области научной психологии. Здесь вы найдете материалы по психологии личности, психологии разивития, социальной и возрастной психологии и другим отраслям психологии.  

Религиоведение

Научные статьи по дисциплине Религиоведение опубликованные в Казахстанских научных журналах

Сельское хозяйство

Научные статьи по дисциплине Сельское хозяйство опубликованные в Казахстанских научных журналах

Социология

Научные статьи по дисциплине Социология опубликованные в Казахстанских научных журналах

Технические науки

Научные статьи по техническим наукам опубликованные в Казахстанских научных журналах

Физика

Научные статьи по дисциплине Физика опубликованные в Казахстанских научных журналах

Физическая культура

Научные статьи по дисциплине Физическая культура опубликованные в Казахстанских научных журналах

Филология

Научные статьи по дисциплине Филология опубликованные в Казахстанских научных журналах

Философия

Научные статьи по дисциплине Философия опубликованные в Казахстанских научных журналах

Химия

Научные статьи по дисциплине Химия опубликованные в Казахстанских научных журналах

Экология

Данный раздел посвящен экологии человека. Здесь вы найдете статьи и доклады об экологических проблемах в Казахстане, охране природы и защите окружающей среды, опубликованные в научных журналах и сборниках статей Казахстана. Авторы рассматривают такие вопросы экологии, как последствия испытаний на Чернобыльском и Семипалатинском полигонах, "зеленая экономика", экологическая безопасность продуктов питания, питьевая вода и природные ресурсы Казахстана. Раздел будет полезен тем, кто интересуется современным состоянием экологии Казахстана, а также последними разработками ученых в данном направлении науки.  

Экономика

Научные статьи по экономике, менеджменту, маркетингу, бухгалтерскому учету, аудиту, оценке недвижимости и пр.

Этнология

Научные статьи по Этнологии опубликованные в Казахстане

Юриспруденция

Раздел посвящен государству и праву, юридической науке, современным проблемам международного права, обзору действующих законов Республики Казахстан Здесь опубликованы статьи из научных журналов и сборников по следующим темам: международное право, государственное право, уголовное право, гражданское право, а также основные тенденции развития национальной правовой системы.