hbtalha Ответов: 4

Когда создавать классы в C++


Is there any kind of rules or a guide to when should I create classes?

I am doing a school assignment in where I create a basic company workers management system.

I input the data of the workers and save them on a file, and use them all over the program.

I have some functions that I have to write like, inputWorkersDataAndSaveToFile(), readFromFileAndPrintWorkersData(), sortAndPrint, diplayWorkersWithSalariesAbove, and a few more.

So it got me wondering, should I create a class and group all these functions together since they are all related? Would it be necessary since I am going to use only one instance of the class ever?

Worth noting that I want create a vector that hold all the workers data and plan using that vector in multiple functions. One reason I started thinking about creating a class is that I am trying to avoid using global variables.

So my program would have two classes class Worker and class Manager (the latter is not a class to represent an employee but a class to manage the functions mentioned above).

Should I create a class in this scenario? Also, is there any rule of thumbs to when to create classes.

My question really falls back on how to design things. 

Thanks 


Что я уже пробовал:

I have searched about this topic but didn't find much.

4 Ответов

Рейтинг:
2

Patrice T

Цитата:
Есть ли какие-то правила или руководство по тому, когда я должен создавать классы?

Технически, нет абсолютно никакого правила.
Вы можете писать код без единого класса, используя только стандартные объекты, вы можете писать код со 100% классами и все, что между ними.
Это скорее вопрос того, как вы изучаете Программирование, методы и симпатии/антипатии.
Я старомодный парень, я изучал программирование в эпоху, когда C++ не существовало. Обычно я создаю минимальные классы/объекты для своих проектов.


hbtalha

Итак, как вы справляетесь с глобальными переменными?? вы не возражаете против них?

Patrice T

Я объявляю их сверху, перед любым кодом.

Рейтинг:
1

Richard MacCutchan

Видеть Классы и объекты C++ [^несколько хороших примеров того, на чем должен основываться класс.


hbtalha

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

Richard MacCutchan

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

hbtalha

Я знаю большинство случаев, когда нужно создавать классы. Но в этом случае я не уверен, что должен это делать.

Должен ли я создать класс, который будет иметь только один объект?

Richard MacCutchan

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

hbtalha

Я знаю, что это выбор мой, чтобы сделать.
То, что я спрашиваю, касается дизайна в целом.
Когда следует группировать некоторые функции в классе?

Richard MacCutchan

Вы группируете функции в классе, когда они необходимы для работы с объектами класса. Подумайте в терминах какого класса объект является, и какие вещи ему нужны для этого делать Класс-это чертеж объекта (автомобиля, дома, банковского счета и т. д.), А функции (или, точнее, "методы") - это вещи, которые заставляют его работать (Start, Stop, AddFloor, DepositMoney и т. д.). Это этап проектирования проекта, который должен помочь вам определить, какие части поддаются классам, а какие являются всего лишь одноразовыми функциями, которые не работают с объектами.

Рейтинг:
0

Greg Utas

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

В более общем плане занятия обычно следуют это-а и имеет-а отношения. Работник является служащий, так что это говорит о том, что Worker должен выводить от Employee Как менеджеры, так и рабочие иметь зарплата, так что это говорит о том, что Employee содержит один Salary (может быть, просто Ан int, но в более общем плане это означает, что Employee имеет Salary объект как один из его элементов данных).

Что касается ваших функций, то лучше всего разделить их на отдельные возможности: read из файла, write в файл, print, sort, select по какому-то критерию. При таком разбиении легко связать их вместе, чтобы сделать то, что в противном случае заставило бы вас копировать и вставлять фрагменты кода из разных функций, чтобы создать еще один монолитный код.


hbtalha

Извините, что-то важное потерялось при переводе. Классный руководитель не должен представлять сотрудника. Это класс, который я хочу сгруппировать функции print, sort, read и т. д. вместе и добавить некоторые переменные.

Теперь я вижу, что то, как я написал этот вопрос, вызывает замешательство. Извиняюсь

Рейтинг:
0

KarstenK

Дизайн кода очень важен, потому что он ведет к небольшому и понятному коду. Одним из основных аспектов классов является уникальный набор задач или свойств. Итак, Рабочий и менеджер-это классы. Потратьте время, чтобы узнать основные сведения о классах и их использовании.

я рекомендую это сделать Изучите учебник по C++ Классы-это глава 8, поэтому вам понадобится некоторое время, прежде чем вы поймете ее .

чаевые:
- отдельный дисплей и файловая операция от расчетного кода
- используйте такие классы, как vector и string, потому что у них есть хорошо разработанный код, который вам понадобится.
- старайтесь работать с указателями на объекты, потому что это ускоряет выполнение


hbtalha

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

Что мне нужно, так это руководство о том, когда их создавать, например, стоит ли создавать группу классов некоторых функций, зная, что у меня будет только один экземпляр этого класса во всей программе?

KarstenK

Конечно. Дизайн класса также предназначен для разделения кода для четких, тестируемых и многократно используемых целей. ;-)

hbtalha

Я создал класс и использовал шаблон Singleton.

hbtalha

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