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

Объектно-ориентированное программирование - это парадигма программирования, использующая «объекты»: структуры данных, состоящие из полей данных и методов вместе с их взаимодействиями.

10
Как предотвратить изменение частного поля в классе?
Представь, что у меня есть этот класс: public class Test { private String[] arr = new String[]{"1","2"}; public String[] getArr() { return arr; } } Теперь у меня есть другой класс, который использует вышеупомянутый класс: Test test = new Test(); test.getArr()[0] ="some value!"; //!!! Вот в чем проблема: я получил …
165 java  arrays  oop  class 

11
Действительно ли идиома pImpl используется на практике?
Я читаю книгу «Исключительный C ++» Херба Саттера, и в этой книге я узнал об идиоме pImpl. По сути, идея состоит в том, чтобы создать структуру для privateобъектов classи динамически распределить их, чтобы уменьшить время компиляции (а также лучше скрыть частные реализации). Например: class X { private: C c; D …
165 c++  oop  pimpl-idiom 

5
Как я могу получить доступ к «статическим» переменным класса внутри методов класса в Python?
Если у меня есть следующий код Python: class Foo(object): bar = 1 def bah(self): print(bar) f = Foo() f.bah() Жалуется NameError: global name 'bar' is not defined Как я могу получить доступ к классу / статической переменной barвнутри метода bah?

8
Перебирать атрибуты объекта в python
У меня есть объект Python с несколькими атрибутами и методами. Я хочу перебрать атрибуты объекта. class my_python_obj(object): attr1='a' attr2='b' attr3='c' def method1(self, etc, etc): #Statements Я хочу создать словарь, содержащий все атрибуты объектов и их текущие значения, но я хочу сделать это динамически (поэтому, если позже я добавлю другой атрибут, …

17
Есть ли в интерфейсе нечто большее, чем правильные методы
Допустим, у меня есть этот интерфейс: public interface IBox { public void setSize(int size); public int getSize(); public int getArea(); //...and so on } И у меня есть класс, который реализует это: public class Rectangle implements IBox { private int size; //Methods here } Если бы я хотел использовать интерфейс …

9
В чем разница между функциональным и императивным языками программирования?
Большинство основных языков, включая языки объектно-ориентированного программирования (ООП), такие как C #, Visual Basic, C ++ и Java, были разработаны, чтобы в первую очередь поддерживать императивное (процедурное) программирование, тогда как языки, подобные Haskell / gofer, являются чисто функциональными. Кто-нибудь может уточнить, в чем разница между этими двумя способами программирования? Я …

22
Объектная ориентация в C
Каким будет набор изящных препроцессорных хаков (совместимых с ANSI C89 / ISO C90), которые обеспечивают некую некрасивую (но пригодную для использования) объектную ориентацию в C? Я знаком с несколькими различными объектно-ориентированными языками, поэтому, пожалуйста, не отвечайте с ответами типа «Изучите C ++!». Я прочитал « Объектно-ориентированное программирование с ANSI C …
157 c  oop  object 

8
Как вызвать родительский метод из дочернего класса в JavaScript?
Я провел последние пару часов, пытаясь найти решение своей проблемы, но это кажется безнадежным. В основном мне нужно знать, как вызвать родительский метод из дочернего класса. Все, что я пробовал до сих пор, заканчивается тем, что либо не работает, либо переписывает родительский метод. Я использую следующий код для настройки ООП …

10
Почему закрытые поля закрыты для типа, а не для экземпляра?
В C # (и многих других языках) совершенно законно обращаться к закрытым полям других экземпляров того же типа. Например: public class Foo { private bool aBool; public void DoBar(Foo anotherFoo) { if (anotherFoo.aBool) ... } } Как указано в спецификации C # (разделы 3.5.1, 3.5.2), доступ к закрытым полям осуществляется …


13
Что такое делегат? [закрыто]
Закрыто . Этот вопрос должен быть более сфокусированным . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он был сосредоточен только на одной проблеме, отредактировав этот пост . Закрыто 6 лет назад . Улучшить этот вопрос Я смущен тем, какова реальная роль делегата? Мне …
152 oop  delegates 

18
Метод цепочки - почему это хорошая практика или нет?
Объединение методов - это практика, когда методы объекта возвращают сам объект для вызова результата для другого метода. Как это: participant.addSchedule(events[1]).addSchedule(events[2]).setStatus('attending').save() Кажется, это считается хорошей практикой, так как он создает читаемый код или «свободный интерфейс». Однако, мне кажется, что вместо этого кажется, что он нарушает нотацию вызова объекта, подразумеваемую самой ориентацией …

12
Наследование против агрегации [закрыто]
В настоящее время этот вопрос не очень подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и, возможно, вновь открыть, обратитесь за …

14
Что означает «низкий уровень сцепления и высокий уровень сцепления»
У меня проблемы с пониманием заявления low in coupling and high in cohesion. Я гуглил и много читал об этом, но все еще не могу понять. Я понимаю High cohesion, что это означает, что у нас должны быть классы, специализированные для выполнения определенной функции. Надеюсь, это правильно? Как класс проверки …
151 oop  ooad 

4
Переопределить методы атрибута ActiveRecord
Пример того, о чем я говорю: class Person < ActiveRecord::Base def name=(name) super(name.capitalize) end def name super().downcase # not sure why you'd do this; this is just an example end end Это похоже на работу, но я только что прочитал раздел переопределение методов атрибутов в документации ActiveRecord :: Base , …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.