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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



 

Предыдущая программа иллюстрировала использование статических элементов данных. Подобным образом C++ позволяет вам определить статические функции-элементы (методы). Если вы создаете статический метод, ваша программа может вызывать такой метод, даже если объекты не были созданы. Например, если класс содержит метод, который может быть использован для данных вне класса, вы могли бы сделать этот метод статическим. Поставьте перед его прототипом ключевое слово static и объявите этот метод как public:

 

 

//………………………

public:

static void clear_screen(void);

//………………………

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

 

menu::clear_screen();

 

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

#include <iostream.h>

#include <conio.h>

class menu

{

 public:

static void clear_screen(void);

// Здесь могут быть другие методы

 private:

int number_of_menu_options;

};

void menu::clear_screen(void)

{

clrscr();

}

void main(void)

{

menu::clear_screen();

}

Так как программа объявляет элемент clear_screen как статический, она может использовать эту функцию для очистки экрана, даже если объекты типа menu не существуют. Функция clear_screen использует функцию clrscr() для очистки экрана.

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

class A

{

static int count; // Поле count - скрытое

public:

static void inc_count(){ count++; }

};

A::int count; // Определение в глобальной области статического элемента данных

……………………….

void f(){

А а;

// a.count++      выполнить нельзя, поле count скрытое

a.inc_count();  // Изменение поля с помощью статического метода:

// или

A::inc_count();

 

Статические методы не могут быть:

константными (const);

виртуальными (virtual).

 

Указатель this

 

Каждый объект содержит свой экземпляр полей класса. Методы класса находятся в памяти в единственном экземпляре и используются всеми объектами совместно, поэтому необходимо обеспечить работу методов с полями именно того объекта, для которого они были вызваны. Это обеспечивается передачей в функцию скрытого параметра this, в котором хранится константный указатель на вызвавший функцию объект. Указатель this неявно используется внутри метода для ссылок на элементы вызвавшего объекта. В явном виде этот указатель применяется в основном для возвращения из метода указателя (return this;) или ссылки (return *this;) на вызвавший объект. Он широко используется при перегрузке операторов.

 

 

Задание К лабораторной работе №13

 

Задание 1

1. Определить класс STUDENT, содержащий следующие частные элементы данных:

• NAME – фамилия и инициалы;

• GROUP – номер группы;

• SES – успеваемость (массив из пяти элементов);

общие методы ввода/вывода данных, с проверкой правильности ввода/вывода;

конструктор, с инициализацией данных.

2. Написать программу, выполняющую следующие действия:

• объявить пять объектов класса STUDENT;

• инициализировать три объекта с помощью конструктора;

• ввести с клавиатуры данные для двух объектов;

• вывести на дисплей фамилии и номера групп студентов, включенных в массив, если средний балл студента больше заданного с клавиатуры;

• если таких студентов нет, вывести соответствующее сообщение.

 

Задание 2

1. Определить класс AEROFLOT, содержащий следующие частные элементы данных:

• NAZN – название пункта назначения рейса;

• NUMR – номер рейса;

• TIP – тип самолета;

общие методы ввода/вывода данных, с проверкой правильности ввода/вывода;

конструктор, с инициализацией данных.

2. Написать программу, выполняющую следующие действия:

• объявить пять объектов класса AEROFLOT;

• инициализировать три объекта с помощью конструктора;

• ввести с клавиатуры данные для двух объектов;

• вывести на экран номера рейсов и тип самолетов, вылетающих в пункт назначения, название которого совпало с названием, введенным с клавиатуры;

• если таких рейсов нет, выдать на дисплей соответствующее сообщение.

 

Задание 3

1. Определить класс WORKER, содержащий следующие частные элементы данных:

• NAME – фамилия и инициалы работника;

• POS – название занимаемой должности;

• YEAR – год поступления на работу;

общие методы ввода/вывода данных, с проверкой правильности ввода/вывода;

конструктор, с инициализацией данных.

2. Написать программу, выполняющую следующие действия:

• объявить пять объектов класса WORKER;

• инициализировать три объекта с помощью конструктора;

• ввести с клавиатуры данные для двух объектов;

• вывести на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры;

• если таких работников нет, вывести на дисплей соответствующее сообщение.

 

Задание 4

1. Определить класс TRAIN, содержащий следующие частные элементы данных:

• NAZN – название пункта назначения;

• NUMR – номер поезда;

• TIME – время отправления;

общие методы ввода/вывода данных, с проверкой правильности ввода/вывода;

конструктор, с инициализацией данных.

2. Написать программу, выполняющую следующие действия:

• объявить пять объектов класса TRAIN;

• инициализировать три объекта с помощью конструктора;

•  ввести с клавиатуры данные для двух объектов;

• вывести на экран информацию о поездах, отправляющихся после введенного с клавиатуры времени;

• если таких поездов нет, выдать на дисплей соответствующее сообщение.

 

Задание 5

1. Определить класс MARSH, содержащий следующие частные элементы данных:

• BEGST – название начального пункта маршрута;

• TERM – название конечного пункта маршрута;

• NUMER – номер маршрута;

общие методы ввода/вывода данных, с проверкой правильности ввода/вывода;

конструктор, с инициализацией данных.

2. Написать программу, выполняющую следующие действия:

• объявить пять объектов класса MARSH;

• инициализировать три объекта с помощью конструктора;

• ввести с клавиатуры данные для двух объектов;

• вывести на экран информации о маршруте, номер которого введен с клавиатуры;

• если таких маршрутов нет, выдать на дисплей соответствующее сообщение.

 

Задание 6

1. Определить класс MARSH, содержащий следующие частные элементы данных:

• BEGST – название начального пункта маршрута;

• TERM – название конечного пункта маршрута;

• NUMER – номер маршрута;

общие методы ввода/вывода данных, с проверкой правильности ввода/вывода;

конструктор, с инициализацией данных.

2. Написать программу, выполняющую следующие действия:

• объявить пять объектов класса MARSH;

• инициализировать три объекта с помощью конструктора;

• ввести с клавиатуры данные для двух объектов;

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

• если таких маршрутов нет, выдать на дисплей соответствующее сообщение.

 

 

Задание 7

1. Определить класс NOTE, содержащий следующие частные элементы данных:

• NAME – фамилия, имя;

• TELE – номер телефона;

• BDAY – день рождения (массив из трех двузначных чисел);

общие методы ввода/вывода данных, с проверкой правильности ввода/вывода;

конструктор, с инициализацией данных.

2. Написать программу, выполняющую следующие действия:

• объявить пять объектов класса NOTE;

• инициализировать три объекта с помощью конструктора;

• ввести с клавиатуры данные для двух объектов;

 

• вывести на экран информацию о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры;

• если таких нет, выдать на дисплей соответствующее сообщение.

 

Задание 8

1. Определить класс ZNAK, содержащий следующие частные элементы данных:

• NAME – фамилия, имя;

• ZODIAC – знак Зодиака;

• BDAY – день рождения (массив из трех двузначных чисел);

общие методы ввода/вывода данных, с проверкой правильности ввода/вывода;

конструктор, с инициализацией данных.

2. Написать программу, выполняющую следующие действия:

• объявить пять объектов класса ZNAK;

• инициализировать три объекта с помощью конструктора;

• ввести с клавиатуры данные для двух объектов;

• вывести на экран информацию о людях, родившихся под знаком, наименование которого введено с клавиатуры;

• если таких нет, выдать на дисплей соответствующее сообщение.

 

Задание 9

1. Определить класс PRICE, содержащий следующие частные элементы данных:

• TOVAR – название товара;

• MAG – название магазина, в котором продается товар;

• STOIM – стоимость товара в рублях;

общие методы ввода/вывода данных, с проверкой правильности ввода/вывода;

конструктор, с инициализацией данных.

2. Написать программу, выполняющую следующие действия:

• объявить пять объектов класса PRICE;

• инициализировать три объекта с помощью конструктора;

• ввести с клавиатуры данные для двух объектов;

• вывести на экран информацию о товаре, название которого введено с клавиатуры;

• если таких товаров нет, выдать на дисплей соответствующее сообщение.

Задание 10

1. Определить класс ORDER, содержащий следующие частные элементы данных:

• PLAT – расчетный счет плательщика;

• POL – расчетный счет получателя;

• SUMMA – перечисляемая сумма в рублях;

общие методы ввода/вывода данных, с проверкой правильности ввода/вывода;

конструктор, с инициализацией данных.

2. Написать программу, выполняющую следующие действия:

• объявить пять объектов класса ORDER;

• инициализировать три объекта с помощью конструктора;

• ввести с клавиатуры данные для двух объектов;

• вывести на экран информацию о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры;

• если такого расчетного счета нет, выдать на дисплей соответствующее сообщение.

 

Задание 11

1. Определить класс DATA, содержащий следующие частные элементы данных:

• Number – число;

• Month – месяц;

• Year – год;

общие методы ввода/вывода данных, с проверкой правильности ввода/вывода;

конструктор, с инициализацией данных.

2. Написать программу, выполняющую следующие действия:

• объявить два объекта класса DATA;

• инициализировать первый объект с помощью конструктора;

• ввести с клавиатуры данные для второго объектов;

• вычислить интервал (в днях) между двумя датами.

 

Задание 12

1. Определить класс DATA, содержащий следующие частные элементы данных:

• Number – число;

• Month – месяц;

• Year – год;

общие методы ввода/вывода данных, с проверкой правильности ввода/вывода;

конструктор, с инициализацией данных.

2.  Написать программу, определяющую по году и порядковому номеру дня в году число и месяц года.

 

Задание 13

1. Определить класс DATA, содержащий следующие частные элементы данных:

• Number – число;

• Month – месяц;

• Year – год;

общие методы ввода/вывода данных, с проверкой правильности ввода/вывода;

конструктор, с инициализацией данных.

2. Написать программу, определяющую по введенной с клавиатуры дате дату на N дней вперед.

 

Задание 14

1. Определить класс STUDENT, содержащий следующие частные элементы данных:

• NAME – фамилия и инициалы;

• GROUP – номер группы;

• SES – успеваемость (массив из пяти элементов);

общие методы ввода/вывода данных, с проверкой правильности ввода/вывода;

конструктор, с инициализацией данных.

2. Написать программу, выполняющую следующие действия:

• объявить пять объектов класса STUDENT;

• инициализировать три объекта с помощью конструктора;

• ввести с клавиатуры данные для двух объектов;

• вывести на дисплей фамилии и номера групп для всех студентов, имеющих оценки 4 и 5;

• если таких студентов нет, вывести соответствующее сообщение.

 

Задание 15

1. Определить класс AEROFLOT, содержащий следующие частные элементы данных:

• NAZN – название пункта назначения рейса;

• NUMR – номер рейса;

• TIP – тип самолета;

общие методы ввода/вывода данных, с проверкой правильности ввода/вывода;

конструктор, с инициализацией данных.

2. Написать программу, выполняющую следующие действия:

• объявить пять объектов класса AEROFLOT;

• инициализировать три объекта с помощью конструктора;

• ввести с клавиатуры данные для двух объектов;

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

• если таких рейсов нет, выдать на дисплей соответствующее сообщение.

 

 

Содержание отчета

 

Отчет выполняется в редакторе Word 2000 и должен содержать:

 

1. Листинг программ на языке Си, решающих задачи в соответствии с вариантом (номером компьютера) задания;

2. Блок-схему алгоритма программ;

3. Пояснения по методу решения задач;

4. Результаты тестирования программ.

 

При оформлении отчета следует пользоваться копированием листинга и результата тестирования в Word. Последний копируется с помощью комбинации клавиш ALT Prt Sc при условии активности консольного окна, что означает копирование графики окна в буфер обмена Windows. Затем окно вставляется в документ Word как любой другой объект.

 


Приложение I

Таблицы кодов ASCII

Символы с кодами 0-127

 

Символы с кодами 128-255 (кодовая таблица 1251 – Windows)

 



Поделиться:


Последнее изменение этой страницы: 2021-11-27; просмотров: 83; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.40.177 (0.084 с.)