JavaScript OOP (Objektumorientált Programozás)
Objektumok létrehozása
Az objektumorientált programozás alapja az objektumok használata, amelyek tulajdonságokkal és metódusokkal (függvényekkel) rendelkeznek.
| // Egyszerű objektum létrehozása
const person = {
name: "John",
age: 30,
greet: function() {
console.log("Hello, my name is " + this.name);
}
};
person.greet(); // Hello, my name is John
|
Osztályok (Classes)
Az osztályok az OOP alapvető részei, és segítségükkel objektumokat hozhatunk létre, amelyek közös struktúrát használnak.
| class Animal {
constructor(name, sound) {
this.name = name;
this.sound = sound;
}
makeSound() {
console.log(`${this.name} says ${this.sound}`);
}
}
// Példa egy Animal objektum létrehozására
const dog = new Animal("Dog", "Woof");
dog.makeSound(); // Dog says Woof
|
Öröklődés (Inheritance)
Az öröklődéssel az osztályok tulajdonságokat és metódusokat örökölhetnek más osztályoktól.
| class Dog extends Animal {
constructor(name, breed) {
super(name, "Woof");
this.breed = breed;
}
showBreed() {
console.log(`This dog is a ${this.breed}`);
}
}
const myDog = new Dog("Buddy", "Golden Retriever");
myDog.makeSound(); // Buddy says Woof
myDog.showBreed(); // This dog is a Golden Retriever
|
Encapsulation (Inkább Zártság)
Az encapsulation arra utal, hogy az adatok védettek és csak meghatározott metódusokkal érhetők el. Ezt privát mezők segítségével érhetjük el.
| class BankAccount {
#balance = 0; // Privát mező
deposit(amount) {
this.#balance += amount;
}
getBalance() {
return this.#balance;
}
}
const account = new BankAccount();
account.deposit(100);
console.log(account.getBalance()); // 100
console.log(account.#balance); // Hibát dob
|
Polimorfizmus (Polymorphism)
A polimorfizmus lehetővé teszi, hogy azonos metódusokat különböző módon valósítsunk meg az örökölt osztályokban.
| class Bird extends Animal {
constructor(name) {
super(name, "Tweet");
}
makeSound() {
console.log(`${this.name} is chirping!`);
}
}
const bird = new Bird("Sparrow");
bird.makeSound(); // Sparrow is chirping!
|
Statikus metódusok és tulajdonságok
A statikus metódusok és tulajdonságok osztályszintűek, és nem az objektumokhoz kötődnek.
| class MathUtils {
static add(a, b) {
return a + b;
}
}
console.log(MathUtils.add(5, 10)); // 15
|
Összegzés
- Objektumok: Egyedi adatok és függvények összegyűjtése.
- Osztályok: Objektumok sablonjai.
- Öröklődés: Egy osztály örökölhet egy másiktól.
- Encapsulation: Az adatok védelme privát mezők segítségével.
- Polimorfizmus: Azonos metódus különböző implementációi különböző osztályokban.
- Statikus metódusok: Osztályszintű függvények.