Tentamen 2022 januari Flashcards

(29 cards)

1
Q

Vad är viktigt att göra för att undvika memory leak?

A

Destructors

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

Single Responsibility Principle

A

Every class, module, or function in a program should have one responsibility/purpose in a program.

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

Open-Closed Principle

A

Objects or entities should be open for extension but closed for modification.

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

Liskov Substituion Principle

A

Objects of a superclass should be replaceable with objects of its subclasses without breaking the application.

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

Interface Segregation Principle

A

States that no code should be forced to depend on methods it does not use.

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

Dependency Inversion Principle

A

High level modules, functions, should not depend on low level modules, functions, ; both should depend on abstractions.

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

“This”

A

Bara tillgängligt via en medlemsfunktion i den klassen, en pekare till det nuvarande objektet som funktionen hör till. Används tillexempel om parameter namnet är samma som datamedlemmen.
class object{
int x;

object(int x){
this->x=x; }
}

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

Friend class

A

En “friend class” har tillgång till privata och protected medlemmar ifrån vännen, säger till i “första klassen” friend class Frclass;

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

Static member

A

Hör till klassen inte till objekten, så om man exempel vill räkna antalet objekt är det relevant.

class MyClass
{
public:
static int stNum;
};
int MyClass::stNum = 2;

int main(){
MyClass cl1, cl2;
cl1.stNum++;
cl2.stNum += 3;
std::cout &laquo_space;MyClass::stNum &laquo_space;cl1.stNum;

}

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

Friend function

A

En “friend function” kan komma åt medlemmar i en function utan att ärva.

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

Anonymous objects

A

Försvinner efter den är använd exempel:

int main() {
MyNum cl1(665); // Normal object. Will exist until it’s destroyed, e.g., by exiting from its scope
std::cout &laquo_space;cl1.getNumber() &laquo_space;std::endl;
std::cout &laquo_space;MyNum(666).getNumber() &laquo_space;std::endl; // Anonymous object. It’s destroyed after it’s used }

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

Patterns

A

Används för att beskriva vanliga problem som kan uppstå med lösningar.

Tre olika grupper:
Creational: singleton, factory method
Structural: adapter, bridge
Behavioral: command, observer

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

Singleton

A

Bara ett objekt existerar och detta skapas internt i den klassen som en pekare. Constructor ligger i private. Copy constructors/ Assignment constructors tars bort.

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

Factory Method

A

Ett interface som skapar objekt utan att ange klass, det specificeras i subklasserna vad för typ av objekt som ska skapas.

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

Adapter

A

Man “slår in” klassen i en ny klass och skickar objektet med hjälp av en “wrapper” (adapter). Adapter klassen har det gamla objektet i private sedan en constructor som gör om de gamla värdena i private till nya. Adapter klassen ärver av de “nya objektet” det gamla objektet ska slås in i.

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

Bridge

A

Implementationen och interfacet var för sig, helt oberoende av varandra. Referenser används för detta.

17
Q

Command

A

Skickar requests som objekt, parameter i ett annat objekt. Går att overload () operatorn så att det ser ut som objektet kallas.

18
Q

Observer

A

Ett objekt noterar förändring och alla “observers” uppdateras automatiskt. Då slipper alla objekt ha loopar som checkar efter förändring.

19
Q

Overloading

A

För att ge operatorer mening

20
Q

Overloading

A

För att ge operatorer mening

21
Q

Error/ exception handling

A

Separerar error handling från programmets vanliga “flow”.

Throw, catch, try

22
Q

Throw

A

Signalerar att ett expedition har hänt, funktionen stoppas direkt

23
Q

Try, Catch

A

För att fånga ett fel och hantera det använder man try och catch.

I ett try block testar man om det throwar ett exception, i catch blocket gör man något åt det.

try{
if ..
throw}

catch{}

24
Q

Access control

A

Om private, protected och public.

25
Referens till klass vad sker
Om det är virtual functions så printas det den pekar på om det inte är virtual så blir det basen
26
Templete class
Används när man ej vet vad för typ som ska ingå i koden, int/float/double
27
Assignment constructor
När det redan finns ett objekt som man vill kopiera över ett annat objekt på const Myvector& operator =(const MyVector& vectorized)
28
Copy constructor
Används när man vill kopiera över ett objekt till ett nytt objekt. MyVector(const MyVector& vec)
29
Override <<
ostream& operator <<(ostream& C, MyClass& m){ c << m.name << endl; }