Вопросы с тегом «class»

20
Никогда не делайте публичных участников виртуальными / абстрактными - правда?

Еще в 2000-х мой коллега сказал мне, что делать публичные методы виртуальными или абстрактными - это нехорошо. Например, он считал такой класс не очень хорошо спроектированным: public abstract class PublicAbstractOrVirtual { public abstract void Method1(string argument); public virtual void...

19
Зачем использовать классы при программировании графического интерфейса tkinter на python?

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

19
«Используйте карту вместо класса для представления данных» - Рич Хикки

В этом видео Рич Хикки , создатель Clojure, он советует использовать карту для представления данных вместо использования класса для их представления, как это сделано в Java. Я не понимаю, как это может быть лучше, так как как пользователь API может узнать, что такое ключи ввода, если они просто...

19
Классы против модулей в Python

В Python есть много модулей (таких как re), которые выполняют определенный набор действий. Вы можете вызывать функции этого модуля и получать результаты, и у модуля в целом есть идея (в данном случае работа с регулярными выражениями). Классы, кажется, делают почти то же самое, но они также,...

18
Почему я вижу так много экземпляров классов без состояния?

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

17
Как лучше организовать файлы классов и интерфейсов?

Хорошо ... после всего обсуждения я немного изменяю свой вопрос, чтобы лучше отразить конкретный пример, с которым я имею дело. У меня есть два класса ModelOneи ModelTwo, эти классы выполняют похожий тип функциональности, но не связаны друг с другом. Тем не менее, у меня есть третий класс,...

17
Создают ли перечисления хрупкие интерфейсы?

Рассмотрим пример ниже. Любое изменение в перечислении ColorChoice влияет на все подклассы IWindowColor. Имеют ли перечисления тенденцию вызывать хрупкие интерфейсы? Есть ли что-то лучше, чем enum для большей полиморфной гибкости? enum class ColorChoice { Blue = 0, Red = 1 }; class IWindowColor {...

17
Абстрактное исключение супертипа

Если бросание System.Exceptionсчитается таким плохим, то почему не было Exceptionсделано abstractв первую очередь? Таким образом, было бы невозможно позвонить: throw new Exception("Error occurred."); Это привело бы к использованию производных исключений для предоставления более подробной информации...

16
Каковы различия между переменными класса и переменными экземпляра в Java? [закрыто]

Закрыто . Этот вопрос нуждается в деталях или ясности . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Добавьте детали и проясните проблему, отредактировав этот пост . Закрыто 4 года назад . Я очень плохо знаком с Java и хочу понять разницу между переменными класса и...

16
Когда перемещать общее поле в базовый класс?

В настоящее время у меня есть два производных класса, Aи Bоба имеют общее поле, и я пытаюсь определить, должно ли оно перейти в базовый класс. На него никогда не ссылаются из базового класса, и говорят, что если в какой-то момент в будущем будет получен другой класс, Cкоторый не имеет _field1, то...

15
Закрытый метод модульного тестирования в c ++ с использованием класса друга

Я знаю, что это спорная практика, но давайте предположим, что это лучший вариант для меня. Мне интересно, какова реальная техника, чтобы сделать это. Подход, который я вижу, заключается в следующем: 1) Сделайте класс друга из класса, метод которого я хочу проверить. 2) В другом классе создайте...

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

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

15
Могу ли я рассматривать интерфейсные методы как абстрактные методы?

Я думал об этом, и у меня были некоторые сомнения. Когда я объявляю интерфейс, например: public interface MyInterface { public void method1(); public void method2(); } Могут ли эти методы интерфейса считаться абстрактными? Я имею в виду, что концепция абстрактного метода: Абстрактный метод - это...

14
Должен ли я реализовать интерфейс напрямую или сделать это суперклассом?

Есть ли разница между public class A extends AbstractB implements C {...} против... public class A extends AbstractB {...} abstract class AbstractB implements C {...} Я понимаю, что в обоих случаях класс А в конечном итоге будет соответствовать интерфейсу. Во втором случае AbstractBможет обеспечить...

13
Почему статические методы не должны быть переопределенными?

В ответах на этот вопрос общее согласие заключалось в том, что статические методы не предназначены для переопределения (и, следовательно, статические функции в C # не могут быть виртуальными или абстрактными). Это не только случай в C #, хотя; Java также запрещает это, и C ++, похоже, тоже не...

13
Существует ли другое обоснование использования абстрактных классов / интерфейсов в C ++ и Java?

Согласно Хербу Саттеру, следует предпочитать абстрактные интерфейсы (все чисто виртуальные функции) абстрактным классам в C ++, чтобы максимально отделить реализацию. Хотя я лично считаю, что это правило очень полезно, я недавно присоединился к команде со многими программистами на Java, и в коде...

13
Каковы роли синглетонов, абстрактных классов и интерфейсов?

Я изучаю ООП на C ++ и, хотя мне известны определения этих трех концепций, я не могу понять, когда и как их использовать. Давайте использовать этот класс для примера: class Person{ private: string name; int age; public: Person(string p1, int p2){this->name=p1; this->age=p2;} ~Person(){} void...

12
Наследование против дополнительного свойства с нулевым значением

Для классов с необязательными полями лучше использовать наследование или свойство, допускающее значение NULL? Рассмотрим этот пример: class Book { private String name; } class BookWithColor extends Book { private String color; } или class Book { private String name; private String color; //when...

12
Имеет ли смысл определять интерфейс, если у меня уже есть абстрактный класс?

У меня есть класс с некоторыми функциями по умолчанию / общий доступ. Я использую abstract classдля этого: public interface ITypeNameMapper { string Map(TypeDefinition typeDefinition); } public abstract class TypeNameMapper : ITypeNameMapper { public virtual string Map(TypeDefinition...

12
Должны ли все открытые методы в абстрактном классе быть помечены как виртуальные?

Недавно мне пришлось обновить абстрактный базовый класс на некоторых OSS, которые я использовал, чтобы он был более тестируемым, сделав их виртуальными (я не мог использовать интерфейс, так как он объединял два). Это заставило меня задуматься о том, должен ли я отмечать все методы, которые мне...