Tentamen 2022 januari Flashcards

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
Q

Referens till klass vad sker

A

Om det är virtual functions så printas det den pekar på om det inte är virtual så blir det basen

26
Q

Templete class

A

Används när man ej vet vad för typ som ska ingå i koden, int/float/double

27
Q

Assignment constructor

A

När det redan finns ett objekt som man vill kopiera över ett annat objekt på

const Myvector& operator =(const MyVector& vectorized)

28
Q

Copy constructor

A

Används när man vill kopiera över ett objekt till ett nytt objekt.

MyVector(const MyVector& vec)

29
Q

Override «

A

ostream& operator «(ostream& C, MyClass& m){

c &laquo_space;m.name &laquo_space;endl;

}