Основы программирования на языке C++

Автор: Пользователь скрыл имя, 17 Декабря 2012 в 21:34, контрольная работа

Краткое описание

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

Оглавление

Введение 3
1. Часть I (Теоретическая) 4
Система классов для описания исключительных ситуаций 4
C++ представляет исключительные ситуации как классы 4
Как заставить С++ проверять исключительные ситуации 4
Использование оператора throw для генерации исключительной ситуации 6
Определение обработчика исключительной ситуации 7
Использование элементов данных исключительной ситуации 10
Обработка неожиданных исключительных ситуаций 11
Объявление генерируемых функцией исключительных ситуаций 12
Исключительные ситуации и классы 13
2. Часть II (Практическая) 15
Задание 1 15
Задание 2 17
Реализация классов 17
Заключение 19
Список использованной литературы 20

Файлы: 1 файл

Контрольная Основы программирования на языке C++.doc

— 153.50 Кб (Скачать)

Как вы уже знаете, прототип функции позволяет вам определить тип возвращаемого функцией значения и типы ее параметров. Если ваши программы  используют исключительные ситуации, вы также можете использовать прототип функции, чтобы указать генерируемые данной функцией исключительные ситуации. Например, следующий прототип функции сообщает компилятору, что функция power_plant может генерировать исключительные ситуации melt_down и radiation_leak:

код C++

 void power_plant(long power_needed) throw (melt_down, radiation_leak);

 

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

Исключительные ситуации и классы

При создании класса вы, возможно, захотите определить исключительные ситуации, характерные для данного  класса. Чтобы создать исключительную ситуацию, характерную для конкретного класса, просто включите эту исключительную ситуацию в качестве одного из общих (public) элементов класса. Например, следующее описание класса string определяет две исключительные ситуации:

код C++

 class string

 

 {

 public:

 string(char *str);

 void fill_string(*str);

 void show_string(void);

 int string_length(void);

 class string_empty { };

 class string_overflow {};

 private:

 int length;

 char string[255];

 };

 

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

код C++

try

 

 {

 some_string.fill_string(some_long_string);

 };

 catch (string::string_overflow)

 

 {

 cerr << "Превышена длина строки, символы отброшены" << endl;

 }

 

2. Часть II (Практическая)

Задание 1

Вычислить и вывести  на экран в виде таблицы значения функции F на интервале от Хнач. До Хкон. с шагом dX.

 при x<0 и b≠0


 при x>0 и b=0


 в остальных случаях

Где a,b,c – действительные числа.

Функция F должна принимать  действительное значение, если выражение (Ац ИЛИ Вц) И (Ац ИЛИ Сц) не равно нулю, и целое значение в противном случае. Через Ац, Вц и Сц обозначены целые части значений a,b,c, операции И и ИЛИ – поразрядные. Значения a,b,c, Xнач, Xкон, dX ввести с клавиатуры.

При реализации задачи в  среде C++ получается результат:

 

 

 

Задание 2

Реализация классов

Реализация прикладной пpoграммной системы, спpoектиpoванной с  помощью объектно-ориентиpoванной методологии (например, методологии OMT), на языке C++ начинается с определения классов, разработанных на этапе пpoектиpoвания, на этом языке. При этом желательно сохранение имен и, по возможности, других обозначений, введенных на этапе пpoектиpoвания. Рассмотрим в качестве примера, как реализовать на языке C++ класс Window, показанный на рисунке 5.1. Отметим, что реализация класca на языке C++ содержательно мало отличается от его представления в объектной модели OMT.

 

class Window

{

public:

  // конструктор

  Window (Length x0, Length y0, Length width, Length height);

  // деструктор

  ~Window ();

  // методы

  void add_box (Length x, Length y, Length width, Length height);

  void add_circle (Length x, Length y, Length radius);

  void clear_selections ();

  void cut_selections ();

  Group* group_selections ();

  void move_selections (Length deltax, Length deltay);

  void redraw_all ();

  void select_item (Length x, Length y);

  void ungroup_selections ();

private:

  Length xmin;

  Length ymin;

  Length xmax;

  Length ymax;

  void add_to_selections (Shape* shape);

};

В определении класca на языке C++ и атрибуты, и методы называются членами этого класca; их определения могут следовать в тексте определения класca в пpoизвольном порядке. Члены класca могут быть общедоступными (public), или приватными (private); вне класca определен доступ только к его общедоступным членам, а приватные члены доступны только методам своего класca. В рассматриваемом примере вce атрибуты являются приватными, а вce методы (кpoме метода add_to_selections) - общедоступными, так что пpoчитать или изменить значение каждого атрибута можно только с помощью соответствующего метода; это рекомендуемая, хотя и не обязательная дисциплина пpoграммиpoвания на языке C++ (определение вceх атрибутов класca как приватных называется инкапсуляцией данных).

Тип Length должен быть определен  пользователем (обычно такие определения  делаются в одном из файлов-заголовков, вставляемых в пpoграмму по #include). Для определения типа используется оператор typedef. Например:

 

typedef float Length;

или

typedef int Length;

 

Заключение

В данной работе были рассмотрены  вопросы:

1. Методы классов. Использование аргументов по умолчанию, неопределенное число аргументов, подстановка тела функции;

2. Циклические вычислительные  процессы;

3.Реализация классов.

В ходе выполняемой работы я:

  1. что такое классы. Как использовать аргументы по умолчанию, неопределенное число аргументов, как подставлять тело функции.
  2. научился разрабатывать программы с циклическими вычислительными процессами на языке С++.
  3. Узнал и изучил реализацию класса, нашел работающий пример с реализацией классов.

 

Список использованной литературы

  1. В.М.Дёмкин. Основы объектно-ориентированного программирования в примерах на С++: Учебное пособие. – Н.Новгород: НФ ГУ-ВШЭ, 2005. – 148 с.
  2. C/C++. Программирование на языке высокого уровня / Т. А. Павловская. — СПб.: Питер, 2003. —461 с: ил.
  3. C++. Объектно-ориентированное программирование: Практикум. — СПб.: Питер, 2006. — 265 с: ил.
  4. Язык С++ и объектно-ориентированное программирование/ А. Скляров. - справочное пособие. - Минск.: "Вышэйшая школа", 1997. – 481 с.
  5. http://ru.wikipedia.org/wiki/

Информация о работе Основы программирования на языке C++