Запитання з тегом «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 використовується на практиці?
Я читаю книгу Герба Саттера "Винятковий С ++", і в цій книзі я дізнався про ідіому pImpl. В основному, ідея полягає у створенні структури для privateоб'єктів а classта динамічно розподілити їх, щоб зменшити час компіляції (а також краще приховати приватні реалізації). Наприклад: class X { private: C c; D 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
Чим відрізняються функціональні та імперативні мови програмування?
Більшість основних мов, включаючи об'єктно-орієнтовані мови програмування (OOP), такі як C #, Visual Basic, C ++ та Java, були розроблені для підтримки в першу чергу імперативного (процедурного) програмування, тоді як Haskell / gofer, як і мови, є суто функціональними. Чи може хтось детальніше розібратися в тому, чим відрізняється ці два …

22
Об'єктно-орієнтована в С
Що б являв собою набір чудових препроцесорних хаків (сумісних ANSI C89 / ISO C90), які дають змогу мати якусь потворну (але корисну) орієнтацію на об'єкт у C? Я знайомий з декількома різними об'єктно-орієнтованими мовами, тому, будь ласка, не відповідайте на відповіді на кшталт "Дізнайтесь C ++!" Я прочитав " Об'єктно-орієнтоване …
157 c  oop  object 

8
Як викликати батьківський метод з дочірнього класу в JavaScript?
Я витратив останні кілька годин, намагаючись знайти рішення своєї проблеми, але це здається безнадійним. В основному мені потрібно знати, як викликати батьківський метод з дочірнього класу. Усі речі, які я намагався до цього часу, закінчуються або не працюючими, ні надмірними написаннями батьківського методу. Я використовую наступний код для налаштування OOP …

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.