Div CGPT generated Q's SOLID og GRASP Flashcards

1
Q

Hvilket SOLID-prinsipp foreskriver at en klasse bør ha bare en enkelt grunn til å endres?
a) Open/Closed Principle
b) Single Responsibility Principle
c) Dependency Inversion Principle
d) Interface Segregation Principle

A

b) Single Responsibility Principle

Dette prinsippet sier at en klasse bør ha ett, og kun ett, ansvar. Det vil si at klassen bør ha én grunn til å endre seg, noe som gjør det lettere å vedlikeholde og forstå koden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Hvilket SOLID-prinsipp er mest relevant når det er nødvendig å utvide funksjonaliteten til et program uten å endre eksisterende kode?
a) Liskov Substitution Principle
b) Dependency Inversion Principle
c) Open/Closed Principle
d) Single Responsibility Principle

A

c) Open/Closed Principle

Open/Closed Principle tilsier at programvareenheter (klasser, moduler, funksjoner, etc.) bør være åpne for utvidelse, men lukket for modifikasjon. Dette betyr at du kan legge til ny funksjonalitet uten å endre eksisterende kode.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Hvilket GRASP-prinsipp anbefaler å tilordne ansvaret for å skape instanser av klasser til den klassen som har informasjonen som er nødvendig for å opprette instansen?
a) Creator
b) Controller
c) Low Coupling
d) High Cohesion

A

a) Creator

Creator-prinsippet i GRASP foreslår at ansvaret for å skape instanser av klasser bør plasseres hos klassen som har den nødvendige informasjonen for å skape instansen. Dette bidrar til å holde systemet organisert og logisk konsistent.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Hvis en kontrollerklasse håndterer for mange brukerforespørsler og dermed bryter prinsippet om høy kohesjon, hvilket GRASP-prinsipp kan anvendes for å forbedre designet?
a) High Cohesion
b) Creator
c) Controller
d) Polymorphism

A

a) High Cohesion

High Cohesion-prinsippet oppfordrer til at en klasse bør ha et lite og godt definert ansvar. Hvis en kontroller håndterer for mange oppgaver, vil kohesjonen reduseres. Derfor bør ansvaret deles for å opprettholde høy kohesjon.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Hvilket SOLID-prinsipp understreker viktigheten av å bruke abstraksjoner i stedet for konkrete klasser for å bygge avhengigheter i et program?
a) Interface Segregation Principle
b) Dependency Inversion Principle
c) Liskov Substitution Principle
d) Open/Closed Principle

A

b) Dependency Inversion Principle

Dependency Inversion Principle handler om å redusere avhengigheter i koden ved å avhenge av abstraksjoner i stedet for konkrete implementasjoner. Dette øker fleksibiliteten og gjør koden lettere å endre og vedlikeholde.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Hvilket GRASP-prinsipp er fokusert på å redusere avhengigheten mellom klasser for å oppnå en mer vedlikeholdbar kodebase?
a) Low Coupling
b) Controller
c) Indirection
d) Pure Fabrication

A

a) Low Coupling

Low Coupling-prinsippet fokuserer på å minimere avhengighetene mellom klasser, noe som resulterer i en kodebase som er enklere å vedlikeholde og modifisere. Ved å redusere koblingen, kan endringer i én del av systemet ha mindre sjanse for å påvirke andre deler.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Hvilket GRASP-prinsipp foreslår å introdusere et ikke-eksisterende objekt for å håndtere funksjonalitet som ikke passer naturlig inn i noen annen klasse?
a) Pure Fabrication
b) Indirection
c) High Cohesion
d) Information Expert

A

a) Pure Fabrication

Pure Fabrication-prinsippet introduserer et helt nytt og ikke-eksisterende objekt for å håndtere funksjonalitet som ikke naturlig passer inn i noen eksisterende klasse. Dette gjør det mulig å unngå å påtvinge ansvar på klasser som ikke burde ha det ansvar, og opprettholder klassens kohesjon.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Når du støter på et grensesnitt som tvinger klassene som implementerer det til å implementere metoder de ikke bruker, hvilket SOLID-prinsipp er blitt brutt?
a) Dependency Inversion Principle
b) Liskov Substitution Principle
c) Interface Segregation Principle
d) Single Responsibility Principle

A

c) Interface Segregation Principle

Interface Segregation Principle sier at ingen klient bør tvinges til å avhenge av metoder den ikke bruker. Dette prinsippet motiverer oppdelingen av store grensesnitt til mindre, mer spesifikke grensesnitt for å forbedre systemets modularitet og redusere uønskede avhengigheter.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Hva sikrer Liskov Substitution Principle (LSP) i objekt-orientert design?
a) At subklasser kan brukes som deres superklasser uten å kjenne forskjellen
b) At alle klasser skal ha én og kun én grunn til å endre seg
c) At avhengigheter i klasser skal være mot abstraksjoner ikke konkrete klasser
d) At klasser ikke skal tvinges til å implementere metoder de ikke bruker

A

a) At subklasser kan brukes som deres superklasser uten å kjenne forskjellen

Liskov Substitution Principle sikrer at objekter av en superklasse kan erstattes med objekter av en underklasse uten at det påvirker den forventede funksjonen av programmet. Dette opprettholder programkorrekthet under substitusjon.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Hvordan kan Open/Closed Principle (OCP) best anvendes i en eksisterende applikasjon?
a) Ved å omskrive all eksisterende kode for å tillate utvidelse
b) Ved å tillate modifikasjon av eksisterende kode
c) Ved å legge til nye funksjoner som nye klasser
d) Ved å benytte globale variabler for å håndtere nye funksjonaliteter

A

c) Ved å legge til nye funksjoner som nye klasser

Open/Closed Principle fremmer ideen om at software-enheter skal være åpne for utvidelse, men lukket for modifikasjoner. Legge til nye funksjoner gjennom nye klasser uten å endre eksisterende kode er en direkte anvendelse av dette prinsippet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Hvilken påstand er mest relevant for Dependency Inversion Principle (DIP)?
a) Høyere nivå moduler skal ikke avhenge av lavere nivå moduler, begge skal avhenge av abstraksjoner
b) Klasser bør være lukket for utvidelse
c) Subklasser bør kunne erstattes med superklasser
d) Klasser bør ha så mange ansvar som mulig for å sikre at all relevant funksjonalitet er på ett sted

A

a) Høyere nivå moduler skal ikke avhenge av lavere nivå moduler, begge skal avhenge av abstraksjoner

Dependency Inversion Principle fokuserer på å strukturere klasser og deres relasjoner gjennom abstraksjoner for å redusere direkte avhengigheter, som styrker designets fleksibilitet og gjør vedlikehold enklere.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Hvilket scenario demonstrerer brudd på Interface Segregation Principle (ISP)?
a) Et grensesnitt som krever at en implementerende klasse implementerer fem forskjellige metoder som den ikke bruker
b) Oppdeling av et stort grensesnitt i mindre, mer relevante grensesnitt
c) Skape abstrakte basisklasser for å håndtere felles funksjonalitet
d) Innføring av adapterklasser for å oversette data mellom forskjellige grensesnitt

A

a) Et grensesnitt som krever at en implementerende klasse implementerer fem forskjellige metoder som den ikke bruker

Interface Segregation Principle motiverer oppdeling av store grensesnitt til mindre, mer spesifikke grensesnitt slik at klasser ikke må implementere metoder de ikke bruker. Dette gjør klassene mer modulære og vedlikeholdbare.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Hvilket GRASP-prinsipp råder deg til å delegere ansvaret for å håndtere systemoperasjoner til en kontrollerklasse?
a) Controller
b) Low Coupling
c) High Cohesion
d) Pure Fabrication

A

a) Controller

Controller-prinsippet i GRASP foreslår at systemets interaksjoner bør håndteres av en spesiell kontrollerklasse som fungerer som en mellommann mellom data (modellen) og brukergrensesnittet (visningen), og bidrar til å organisere og delegere handlingene.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Hva oppnår man ved å implementere Polymorphism-prinsippet i GRASP?
a) Reduksjon i kode duplisering ved å bruke arv
b) Å unngå endringer i eksisterende klasser ved å legge til nye klasser
c) Behandling av forskjellige forespørsler med en uniform grensesnitt
d) Å skille ansvaret mellom ulike objekter basert på deres evne

A

c) Behandling av forskjellige forespørsler med en uniform grensesnitt

Polymorphism tillater at forskjellige klasser kan bli brukt gjennom et felles grensesnitt. Dette muliggjør fleksibilitet i kode ved at programmer kan bruke referanser til superklasser for å kommunisere med alle underklasser, noe som forenkler kodeendringer og vedlikehold.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly