0 / 0 / 0
Регистрация: 27.07.2022
Сообщений: 44

Как часто и для чего используются классы? Что-то из разряда ООП

15.06.2024, 11:18. Показов 560. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Наверное стоило бы для начала разобраться в самом языке, но мне слишком интересно. Скажите, прям всегда везде и для всего обычно используется отдельный класс? Получается, если ты хочешь что-то сделать/получить, то пишешь класс с нужным методом, а затем создаешь объект и используешь этот самый метод?
Приведу пример того, как в моем понимании искались бы простые числа(понятно, что можно и проще в маленькой программке на 20 строк):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
class Program
{
    static void Main() 
    {
        getPrimes getter = new getPrimes();
        int[] primes = getter.Get(100);
        foreach (int i in primes) 
        {
            Console.WriteLine(i);
        }
 
    }
}
 
class getPrimes 
{
    public int[] Get(int n) 
    {
        int[] nums = new int[n];
        int count = 0;
        int nextFree = 0;
        for (int i = 0; i < n; i++)
        {
            nums[i] = i;
        }
        nums[1] = 0;
        foreach (int j in nums)
        {
            if (j != 0)
            {
                for (int k = 2 * j; k < n; k += j)
                {
                    nums[k] = 0;
                }
                count++;
            }
        }
        int[] primers = new int[count];
        foreach (int k in nums)
        {
            if (k != 0)
            {
                primers[nextFree] = k;
                nextFree++;
            }
 
 
        }
        return primers;
    }
}
Выходит:
-Создал класс
-Потом объект
-В нем метод
-Используешь всё это где надо, не смотря под капот

Или нет? Как бы вы тогда всё организовали?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.06.2024, 11:18
Ответы с готовыми решениями:

Что такое полис и конечные автоматы и для чего используются в с++?
ОЧЕНЬ ХОЧУ ЗНАТЬ. ПОМОГИТЕ!!!!!!!!!

Для чего нужна термопаста? И как часто ее нужно заменять?
Для чего нужна термопаста? И как часто ее нужно заменять?

для чего используются
Вопрос для чего используются private member variables numItems и allocatedItems и какова цель private cartItems? в следующем...

6
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
15.06.2024, 14:55
Лучший ответ Сообщение было отмечено alex150051 как решение

Решение

Цитата Сообщение от alex150051 Посмотреть сообщение
Наверное стоило бы для начала разобраться в самом языке
Стоило. Очень стоило. Вопрос "на кой нужны интерфейсы" хорошо раскрывается на чем-то более крупном. Чтобы написать что-то крупное, нужно знать достаточно хороший объем возможностей C# (на одних if-else далеко не уедешь).

Поэтому обычно картина такая: сначала зубрим всякие мелочи, что "есть такая-то вещь, она работает вот так", а потом показывается как всё это в куче организует хороший код.

Цитата Сообщение от alex150051 Посмотреть сообщение
Скажите, прям всегда везде и для всего обычно используется отдельный класс?
Либо класс, либо структуры. Оба решают вопрос инкапсуляции (объединить общую логику в едином месте, с сокрытием реализации внутри). И реализуют они методЫ (включая такие частные случаи как свойства и ивенты), порой интерфейсы (контракт этих самых методов, включая частные случаи)

Такой пример: вам нужно реализовать консольный калькулятор, который умеет записывать в лог скажем в файл. Есть возможность всё единой простыней через switch. А можно разбить на два класса: класс отвечающий за расчеты (даже с тем же switch внутри) и класс отвечающий за запись в файл. Теперь если нужно править логику рассчетов, человеку нужно просмотреть только один класс не сильно вникая что отвечает за запись в файл. Если нужно будет поправить только логику логирования (поменять формат, записывать в базу-данных) -- не задевается логика рассчетов.

Это ещё позитивно сказывается на случае, когда работает над проектом больше одного человека (а обычно оно так и есть).


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

Также ООП не всегда положительно влияет на перфоманс. В исключительных проектах или кусках программы это может быть критическим, и там переходят на процедурное программирование.
2
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18310 / 14234 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 1
15.06.2024, 15:59
Цитата Сообщение от alex150051 Посмотреть сообщение
Скажите, прям всегда везде и для всего обычно используется отдельный класс?
Нет. Например в приведенном примере можно было обойтись static методом.

Цитата Сообщение от alex150051 Посмотреть сообщение
Получается, если ты хочешь что-то сделать/получить, то пишешь класс с нужным методом, а затем создаешь объект и используешь этот самый метод?
По ситуации. Класс полезен для группировки связанных чем-то общим методов. И когда этим методам необходимо общее состояние - поля/свойства.

Цитата Сообщение от alex150051 Посмотреть сообщение
Выходит:
-Создал класс
-Потом объект
-В нем метод
-Используешь всё это где надо, не смотря под капот
Не всегда. Вот например вы вызываете метод WriteLine из класса Console без всяких объектов.

Цитата Сообщение от alex150051 Посмотреть сообщение
Или нет? Как бы вы тогда всё организовали?
В данном случае я бы просто добавил static метод в класс Program. Отдельный класс тут не несет пользы.

Цитата Сообщение от alex150051 Посмотреть сообщение
Наверное стоило бы для начала разобраться в самом языке
Даже не в языке, а скорее в ООП. Если вы в таком стиле не писали, то понадобится время и практика чтобы уловить суть.
2
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
15.06.2024, 16:45

Не по теме:

Цитата Сообщение от OwenGlendower Посмотреть сообщение
Например в приведенном примере можно было обойтись static методом.
технически они тоже описываются в классе. Я думаю вопрос всё про "отдельный класс".



Кстати "да" -- как верно пометили, есть же статика, которая не требует создания отельных экземпляров. Те же методы расширения очень часто используются, особенно всякие linq.
1
16 / 17 / 0
Регистрация: 12.01.2022
Сообщений: 142
15.06.2024, 16:55
Цитата Сообщение от Wolfdp Посмотреть сообщение
Оба решают вопрос инкапсуляции (объединить общую логику в едином месте, с сокрытием реализации внутри)
Ваши бы слова да людям в уши!
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18310 / 14234 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 1
15.06.2024, 16:59
Цитата Сообщение от Wolfdp Посмотреть сообщение
технически они тоже описываются в классе
Разумеется. Даже если использовать top level statements, то методы будут в классе.

Цитата Сообщение от Wolfdp Посмотреть сообщение
Я думаю вопрос всё про "отдельный класс".
Я тоже так понял вопрос. Далее в своем ответе я уточнил что можно добавить static метод в уже существующий класс Program. Таким образом не нужно ни создавать новый класс ни его экземпляр.
1
22 / 17 / 5
Регистрация: 03.03.2022
Сообщений: 77
15.06.2024, 17:42
По своему опыту скажу, лично я создавал отдельный статический класс, который отправлял запросы к моему API, чтоб в методах и обработчиках событий не прописывать один и тот же код, даже использовал обобщение, когда нужно получить список типа условных классов A, B, C: вместо того, чтоб создавать однотипные методы, использовал буковку T, где динамически подставлялось необходимый тип, указывающий при вызове такого метода.
И это я ведь даже не изучил популярные паттерны проектирования, не научился грамотно структурировать код, единственное что хорошо у меня получается - замечать однотипный повторяющийся код и стараться избавиться от него, заныкав в метод или даже в отдельный класс.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.06.2024, 17:42
Помогаю со студенческими работами здесь

Для чего используются методы?
Ответ:

Для чего используются тики
Решил почитать документацию по php и наткнулся на такую вещь: declare(ticks=1); // Функция, исполняемая при каждом тике ...

Для чего используются ActionList
для чего можна использовать ActionList памагите естли можно напишите с кодами

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

Для чего используются песочницы
Для чего используются песочницы? Я просто только начинаю изучать и еще толком ничего не знаю. На каждый вопрос создавайте по одной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru