Типізація

Концепція типізації грунтується на понятті типів абстрактних даних.

Тип - це точне визначення властивостей побудови чи поведінки, яку притаманне деякій сукупності об' єктів.

Типізація - це обмеження, яку накладається на клас об' єктів і перешкоджає взаємній заміні різних класів (чи сильно звужує можливість такої взаємозаміни).

Типізація дозволяє виконувати опис абстракції так, що реалізується підтримка проектних рішень на рівні мови програмування. Вод-ночас об' єктні та об' єктно - орієнтовані мови програмування можуть бути типізовані строго, нестрого та зовсім не типізовані, що дозволяє говорити про типізацію як другорядний елемент.

Розглянемо переваги строго типізованих мов.

1. Відсутність контролю типів може призвести до загадкових збоїв у програмах під година їх виконання.

2. У більшості випадків процес повторного редагування- компі - ляції - відлагодження досить громіздкий, тому раннє визначення помилок є неодмінною умовою.

3. Декларування типів спрощує документування програм.

4. Багато з компіляторів дозволяють генерувати ефективніший код при явному визначенні типів.

Статичний та динамічний зв'язок. Концепції строгої та статичної типізації за своєю суттю різні. Строга типізація стосується контролю відповідності типів, а статична (інакше називається статичним, або раннім, зв'язком) - годині, коли імена пов'язуються з типами. Статичний зв'язок означає незмінність типів всіх змінних та виразів у процесі компіляції; динамічний зв'язок (інакше - пізній зв'язок) означає ситуацію, коли тип всіх змінних та виразів визначається лише під година виконання програми. Концепції типізації та зв' язків є незалежними, тому мова програмування може бути строго типізована як зі статичним, так і з динамічним зв'язком.

Певне ім 'я (оголошена змінна) може позначати об' єкт будь-якого класу, який належить до певного суперкласу. Це і є поліморфізм. Будь-який із об' єктів, котрий пов'язаний з таким іменем, повинний виконувати деяку множину загальних операцій. Поліформізм постає на стику принципів успадкування та динамічних зв' язків.

Ця властивість є найістотнішою в об' єктно - орієнтованому програмуванні разом із властивістю реалізації абстракцій.