Arv - Oprettelse Sub / Super Klasser - En retningslinje ...

Hvornår kan vi skabe sub / super klasser i en objektorienteret design?

Objektorienteret Design / Visuel Modeling

Denne artikel kan hjælpe dig i den tidlige og MELLEMPRODUKTERNE analyse og design.

Som enhver Object Pascal developer ved, arv er et af de grundlæggende begreber i objektorienteret design. Jeg har ikke tænkt mig at give dig nogen forklaring på, hvad Arv er da alle kender definitionen allerede. I stedet vil jeg give dig nogle af de tips i at designe klasser i de tidlige stadier af objektorienteret design.

Under alle projektudvikling, vil analyse og design faser de skal gives betydning i den indledende fase. I objektorienteret design / Visuel Modeling, når holdet begynder at indsamle oplysninger om projektet, vil holdet identificere objekter, der er involveret i hver af aktiviteterne.

På et tidspunkt, vil holdet have nogle eksempler klasser for de objekter, der identificeres. Som projekteringsfasen modnes, vil der være flere og flere klasser kommer. Nogle gange kan det være nødvendigt at arve en ny klasse fra en eksisterende eller du måske nødt til at gruppe to klasser til én. På dette tidspunkt, kan du bruge følgende begreber / teknikker til at skabe en sub / super klasse fra eksisterende klasser:

Specialisering: Oprette Sub Classes

Hvad er en Sub klasse og super klasse:

Det er en klasse arvet / afledt af en anden klasse. Den nye klasse (underklasse) vil have alle de egenskaber / metoder og arrangementer for moderselskabet klasse (hvorfra det arvet) og kan have yderligere egenskaber specifikke for denne underklasse. Den forælder klasse hedder Super Class.

Lad mig forklare dette koncept med et eksempel.

Lad os antage, at vi har en klasse kaldet TCitizen.

Strukturen af ​​TCitizen er noget som dette:

TCitizen = Class

SocialSecurityNo: string;

Navn: string;

Alder: heltal;

Gade: string;

By: string;

Stat: string;

Postnummer: heltal;

..................

.................. Osv.,

ende;

Ovenstående egenskaber er nogle af de fælles attributter, du kan have for en borger. Denne borger kunne være nogen fra et lille barn til en gammel mand i et land.

Lad os antage, at vi har i vores analyse, nogle Veterans information også. Veteraner er mennesker, der blev i hæren og / eller nogle fornemme offentlige tjenester og pensionerede nu. Disse Veteraner er også en del af de normale borgere, men de ville have nogle særlige privilegier. I dette tilfælde kan vi bruge det eksisterende TCitizen klassen ved at tilføje særlige privilegier attributter for en Veteran, men det ville ikke være et bedre design. I dette tilfælde kan vi kalde denne Veteran som en specialiseret Citizen. Så vi kan skabe en ny SUB KLASSE afledt af TCitizen, kaldet TVeteranCitizen.

Den TVeteranCitizen klasse kan ligne noget som dette:

TVeteranCitizen = klasse (TCitizen)

NoOfYearsOfService: integer;

Belønning: string;

Rank: string;

DateRetired: TDateTime;

.........................................

...................................... Osv.,

ende;

Generalisering: Oprettelse Super Klasser

Lad mig forklare dette også gennem nogle eksempler klasser.

Lad os antage, at vi designer en bibliotekssystem og vi identificeret to klasser TStudent indeholdende studerende information, og TProfessor, indeholder professor oplysninger, blandt andre klasser. Vi tager disse to klasser for vores diskussion.

Strukturen af ​​disse to klasser vil være som følger:

TStudent = Class

Studienummer: string;

Navn: string;

Alder: string;

Grade: string;

........................

..................... Osv.,

ende;

TProfessor = Class

ProfID: string;

Navn: string;

Alder: string;

....................

................ Osv.,

ende;

Systemet vil gøre det muligt både studerende og professorer til at logge ind med deres studerende og professor id'er og gøre bibliotekets aktiviteter. Systemet kontrollerer den studerende og professor id'er ved login.

Her kan vi generalisere en oplysninger om både klasser, så længe de begge er enige i deres struktur og type. Jeg taler om de to attributter studienummer i TStudent og ProfID i TProfessor. I dette tilfælde de begge er af samme type: String. Den anden ting er, at de skal være både af samme struktur / størrelse streng. Hvis studienummer er af syv charactors længde og ProfID er fire charactors længde, så kan vi ikke generalisere denne info.

Så længe de begge er enige om de to ting, kan vi generalisere.

De har begge tjener som en måde at logge på systemet efter kontrol. Så vi kan generalisere denne information og skabe en SUPER klasse med et navn TUser og arve både TStudent og TProfessor fra TUser.

Selv om dette synes at være et simpelt spørgsmål, jeg ville bare gerne dele dette med vores Delphi Fællesskabet.

Nyd !!!

Tak.

Magesh.