Первый вопрос здесь, я искал вокруг, и я боюсь, что не знаю точной терминологии для того, что я пытаюсь сделать, t атаковать меня, если его уже спросили. Направьте меня в правильном направлении, и я буду читать.Задача-C, Неправильное наследование ivars подклассам и методам
У меня есть Класс:
"Форма" (Из NSObject)
Подклассов "Shape" включает в себя:
"круг" и т.д. - каждое с их соответствующим Calcarea (рассчитать площадь) методу.
Мои подклассы отлично работают в качестве лиц, получить класс «Круг», чтобы установить Ивар (с помощью «Shape» методы в «Shape» и наследовать их, а затем вычислить область, используя те
Что я хочу сделать:. Я хочу иметь возможность устанавливать параметры для объекта «Shape». Затем я хочу, чтобы эти параметры просачивались в каждый из подклассов («Круг», «Треугольник» и т. Д.), Чтобы я мог ввести два параметра, и это дает мне вся моя площадь и окружность вычисление из каждого подкласса. каждый из методов подкласса тот же «Calcarea», например.
Теории:
-Brute, заставляя мой путь через использование двух переменных в моем основном методе для сброса каждого параметра для каждого подкласса. это кажется действительно неэффективным, но работает.
-using «id», в основном, этот объект создает параметры в «Shape» через каждый подкласс, а затем перебирает каждый подкласс до тех пор, пока все не будут закончены. Пробовал пару вещей, не могу понять.
-создание объекта в «Shape», которое затем выполняет каждую из функций его подклассов - это звучит плохо из того, что я читал, суперклассы не должны знать о том, что делают их подклассы ... могу ли я создать метод в «Shape», который выполняет [myCircle calcArea] и [myTriangle calcArea]?
-Я проектирую эту программу неправильно.
Заранее благодарим за вашу помощь!
поэтому, если я правильно понимаю вас, я могу создать метод в SuperClass, а затем определить и инициировать его в суперклассах. - Это имеет смысл для меня, но как работает идентификатор в этом случае? Кажется, что инициирует класс с параметром «param», поскольку переменная правильная? Как это должно быть закодировано в основной функции? – thattookawhile
id - указатель на внутреннюю структуру объекта. Вы вообще не должны беспокоиться об идентификаторе - он используется внутри системы времени выполнения. – Max
какая основная функция? – Max