Этот пример неверен на многих разных уровнях:)
В идеале "Человек" был бы классом; «name», «sex» и «SSN» будут членами базового класса, а «process ()» будет либо method (), либо виртуальным методом ().
В: Есть ли шанс изменить Person и PersonSSN на классы и сделать метод "process ()"?
В: Как ваша программа «узнает», есть ли запись «Person» или «PersonSSN»? Можете ли вы сделать это параметром в вашей функции "process ()"?
ADDENDUM от 16.09.2011 :
Вопрос на миллион долларов: «Как ваш код различает« Person »и« PersonSSN »?»
Если вы используете класс, вы можете использовать «typeof» (неудовлетворительно) или привязать поведение, специфичное для класса, к методу класса (предпочтительнее, и то, что было предложено с предложением «шаблона»).
Вам также необходимо по крайней мере ТРИ различных класса: класс "Person" (который выглядит и ведет себя как человек), класс "PersonSSN" (который имеет дополнительные данные и, возможно, дополнительное поведение) ... и "ueber". -класс ", который знает, как СЧИТАТЬ Персоны и Персоны.
Так что да, я предполагаю, что должен быть какой-то класс, который ИМЕЕТ или ИСПОЛЬЗУЕТ"Persons" и "PersonSSNs".
И да, вы можете учесть в своем коде, что один класс использует «Process-count-countcutive», а другой вызывает родительский «Process-count-последовательный» и добавляет новый «print ssn».