Tentamen 2022 januari Flashcards
(29 cards)
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.
Bridge
Implementationen och interfacet var för sig, helt oberoende av varandra. Referenser används för detta.
Command
Skickar requests som objekt, parameter i ett annat objekt. Går att overload () operatorn så att det ser ut som objektet kallas.
Observer
Ett objekt noterar förändring och alla “observers” uppdateras automatiskt. Då slipper alla objekt ha loopar som checkar efter förändring.
Overloading
För att ge operatorer mening
Overloading
För att ge operatorer mening
Error/ exception handling
Separerar error handling från programmets vanliga “flow”.
Throw, catch, try
Throw
Signalerar att ett expedition har hänt, funktionen stoppas direkt
Try, Catch
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{}
Access control
Om private, protected och public.