Drobi() // конструктор по умолчанию



Лабораторная работа 3

Цель лабораторной работы:

Изучить функции доступа (функции, позволяющие получить или изменить значение элемента класса). Написать программу, моделирующую работу с дробями, представленными в виде пары чисел, хранящихся в созданном классе. Данный класс должен содержать функции- «методы», позволяющие складывать, вычитать, перемножать и делить дроби, дробь и число (то есть возможны два случая: 1ый- дробь-оператор-дробь и 2-ой дробь-оператор-число), а так же функции, описывающие работу операторов сравнения - «перегрузку»: ==(равенство), != (неравенство), < (меньше), <=( меньше либо равно), >(больше), >= (больше либо равно).

План:

1. Инкапсуляция. Функции доступа. Сеттеры и геттеры.

2. Перегрузка операторов.

3. Приложение.

4. Программа

 

 


Инкапсуляция. Функции доступа. Сеттеры и геттеры.

В объектно-ориентированном программировании инкапсуляция (или скрытие информации) — это процесс скрытого хранения деталей реализации объекта. Пользователи обращаются к объекту через открытый интерфейс. В C++ инкапсуляция реализована с помощью функций доступа.

Функция доступа (функция access) — это короткая открытая функция, задачей которой является получение или изменение значения закрытой переменной-члена класса.

Функции доступа обычно бывают двух вариантов: геттеры и сеттеры.

Геттер (getter) — это функция, которая возвращает значение закрытой переменной-члена класса.

Int getdenom () const { return denom ; } – возвращение значения «закрытой» переменной denom .

Сеттер (setter) — это функция, которая позволяет установить значение закрытой переменной-члена класса.

Void setnom ( int n ) { nom = n ; } – «закрытой» переменной nom присваивается значение переменной n .

 

Перегрузка операторов.

 

С++ поддерживает перегрузку операторов (operator overloading). За небольшими исключениями большинство операторов С++ могут быть перегружены, в результате чего они получат специаль­ное значение по отношению к определенным классам. Например, класс, определяющий связан­ный список, может использовать оператор + для того, чтобы добавлять объект к списку. Другой класс может использовать оператор + совершенно иным способом. Когда оператор перегружен, ни одно из его исходных значений не теряет смысла. Просто для определенного класса объектов определен новый оператор. Поэтому перегрузка оператора + для того, чтобы обрабатывать свя­занный список, не изменяет его действия по отношению к целым числам.

Для того, чтобы перегрузить оператор, необходимо определить, что именно означает опера­тор по отношению к тому классу, к которому он применяется. Для этого определяется функция-оператор, задающая действие оператора. Общая форма записи функции-оператора для случая, когда она является членом класса, имеет вид:
тип имя_класса::operator#(список_аргументов)
{
// действия, определенные применительно к классу
}

 

+Здесь перегруженный оператор подставляется вместо символа #, а тип задает тип значений, воз­вращаемых оператором. Для того, чтобы упростить использование перегруженного оператора в
сложных выражениях, в качестве возвращаемого значения часто выбирают тот же самый тип, что и класс, для которого перегружается оператор.

пояснить

Пример:

Drobi Drobi :: operator / ( const Drobi & f ) const //перегрузка оператора /

{

    return Drobi (nom * f .denom, denom * f .nom);

}

Приложение.

Для написания программы потребуется вспомнить часть формул школьной программы.

1а. Сложение двух дробей:

где – числители двух дробей,  – знаменатели двух дробей.

2б. Вычитание двух дробей:

 

где – числители двух дробей,  – знаменатели двух дробей.

3ю. Перемножение дробей:

 

где – числители двух дробей,  – знаменатели двух дробей.

4f. Деление дробей:

где – числители двух дробей,  – знаменатели двух дробей.

Программа.

В файле Drobi.h:

#pragma once

#include <iostream> // для использования функций из std

Class Drobi

{

Private : // закрытые поля

Int nom; // числитель

Int denom; // знаменатель

Public : // открытые поля

Drobi() // конструктор по умолчанию

    {

              nom = 0;

              denom = 1;

    }


Дата добавления: 2020-04-25; просмотров: 197; Мы поможем в написании вашей работы!

Поделиться с друзьями:






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