Tentamen 2022 januari Flashcards
Vad är viktigt att göra för att undvika memory leak?
Destructors
Single Responsibility Principle
Every class, module, or function in a program should have one responsibility/purpose in a program.
Open-Closed Principle
Objects or entities should be open for extension but closed for modification.
Liskov Substituion Principle
Objects of a superclass should be replaceable with objects of its subclasses without breaking the application.
Interface Segregation Principle
States that no code should be forced to depend on methods it does not use.
Dependency Inversion Principle
High level modules, functions, should not depend on low level modules, functions, ; both should depend on abstractions.
“This”
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; }
}
Friend class
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;
Static member
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 «_space;MyClass::stNum «_space;cl1.stNum;
}
Friend function
En “friend function” kan komma åt medlemmar i en function utan att ärva.
Anonymous objects
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 «_space;cl1.getNumber() «_space;std::endl;
std::cout «_space;MyNum(666).getNumber() «_space;std::endl; // Anonymous object. It’s destroyed after it’s used }
Patterns
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
Singleton
Bara ett objekt existerar och detta skapas internt i den klassen som en pekare. Constructor ligger i private. Copy constructors/ Assignment constructors tars bort.
Factory Method
Ett interface som skapar objekt utan att ange klass, det specificeras i subklasserna vad för typ av objekt som ska skapas.
Adapter
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.