- Objektově orientované programování (OOP) organizuje kód kolem objektů, což usnadňuje reprezentaci reálného světa.
- Mezi klíčové koncepty OOP patří zapouzdření, dědičnost, polymorfismus a abstrakce.
- OOP podporuje opětovné použití kódu a zlepšuje modularitu a bezpečnost softwaru.
- Populární OOP jazyky jako Java, C++ a Python nabízejí rozmanité funkce a přístupy.
Objektově orientovaný programovací jazyk: Základy a evoluce
Třídy a předměty: Pilíře OOP
class Coche:
def __init__(self, color, marca, modelo):
self.color = color
self.marca = marca
self.modelo = modelo
def arrancar(self):
print("El coche está arrancando")
def acelerar(self):
print("El coche está acelerando")
mi_coche = Coche("rojo", "Toyota", "Corolla")
coche_de_mi_amigo = Coche("azul", "Honda", "Civic")
Zapouzdření: Ochrana dat v OOP
class CuentaBancaria:
def __init__(self, saldo_inicial):
self.__saldo = saldo_inicial # El doble guion bajo hace que sea privado
def depositar(self, cantidad):
if cantidad > 0:
self.__saldo += cantidad
return True
return False
def retirar(self, cantidad):
if cantidad > 0 and self.__saldo >= cantidad:
self.__saldo -= cantidad
return True
return False
def obtener_saldo(self):
return self.__saldo
Dědičnost: Opětovné použití a hierarchie v kódu
class Vehiculo:
def __init__(self, marca, modelo):
self.marca = marca
self.modelo = modelo
def arrancar(self):
print(f"El {self.marca} {self.modelo} está arrancando")
class Coche(Vehiculo):
def __init__(self, marca, modelo, num_puertas):
super().__init__(marca, modelo)
self.num_puertas = num_puertas
def abrir_maletero(self):
print(f"Abriendo el maletero del {self.marca} {self.modelo}")
Polymorfismus: Flexibilita v objektově orientovaném programování
Existují dva hlavní typy polymorfismu:
- Polymorfismus přetížení: Umožňuje více metodám mít stejný název, ale různé parametry.
- Přepsat polymorfismus: Umožňuje podtřídě poskytovat konkrétní implementaci metody, která je již definována v její nadtřídě.
class Animal:
def hacer_sonido(self):
pass
class Perro(Animal):
def hacer_sonido(self):
return "Guau!"
class Gato(Animal):
def hacer_sonido(self):
return "Miau!"
def animal_sonido(animal):
print(animal.hacer_sonido())
perro = Perro()
gato = Gato()
animal_sonido(perro) # Imprime: Guau!
animal_sonido(gato) # Imprime: Miau!
Abstrakce: Zjednodušení složitosti v OOP
from abc import ABC, abstractmethod
class FiguraGeometrica(ABC):
@abstractmethod
def area(self):
pass
@abstractmethod
def perimetro(self):
pass
class Rectangulo(FiguraGeometrica):
def __init__(self, base, altura):
self.base = base
self.altura = altura
def area(self):
return self.base * self.altura
def perimetro(self):
return 2 * (self.base + self.altura)
Výhody a nevýhody objektově orientovaného programovacího jazyka
Výhody:
- Opětovné použití kódu: Dědičnost a složení umožňují efektivní opětovné použití kódu.
- Modularita: Kód je organizován do logických jednotek (objektů), což usnadňuje údržbu a ladění.
- FlexibilitaPolymorfismus umožňuje objektům chovat se odlišně v závislosti na kontextu.
- zabezpečení: Zapouzdření chrání data před neoprávněným přístupem.
- Modeling v reálném světě: OOP umožňuje intuitivní znázornění entit reálného světa.
Nevýhody:
- Křivka učení: Pro začátečníky zvyklé na procedurální programování to může být obtížné pochopit.
- Výkon: V některých případech může být OOP méně efektivní než jiná paradigmata.
- Velikost programuObjektově orientované programy bývají větší než jejich procedurální protějšky.
- Počáteční design: Vyžaduje pečlivý návrh od začátku, což může trvat déle.
Oblíbené OOP jazyky: Java, C++, Python a další
- JávaJava, známá svým heslem „napiš jednou, spusť kdekoli“, je široce používána ve vývoji podniků a Androidu.
- C + +: Rozšíření jazyka C, které přidává funkce OOP. Díky svému výkonu je oblíbený ve vývoji systémů a videoher.
- PYTHONVysokoúrovňový programovací jazyk známý svou jednoduchostí a čitelností. Podporuje více paradigmat, včetně objektově orientovaného programování (OOP).
- C#: Vyvinutý společností Microsoft, je podobný Javě a je široce používán při vývoji aplikací a her pro Windows s Unity.
- RubínZnámý pro svou elegantní syntaxi a framework Ruby on Rails pro webový vývoj.
- Rychlý: Jazyk společnosti Apple pro vývoj iOS a macOS, navržený tak, aby byl bezpečný a vysoce výkonný.
# Ejemplo en Python
class Persona:
def __init__(self, nombre):
self.nombre = nombre
def saludar(self):
print(f"Hola, soy {self.nombre}")
persona = Persona("Ana")
persona.saludar() # Imprime: Hola, soy Ana
// Ejemplo en Java
public class Persona {
private String nombre;
public Persona(String nombre) {
this.nombre = nombre;
}
public void saludar() {
System.out.println("Hola, soy " + nombre);
}
}
public class Main {
public static void main(String[] args) {
Persona persona = new Persona("Ana");
persona.saludar(); // Imprime: Hola, soy Ana
}
}
Návrhové vzory v OOP: Osvědčená řešení běžných problémů
Existují tři hlavní kategorie návrhových vzorů:
- Kreativní vzory: Zabývají se mechanismy tvorby objektů. Příklady:
- Singleton: Zajišťuje, že třída má pouze jednu instanci.
- Tovární metoda: Definuje rozhraní pro vytváření objektu, ale umožňuje podtřídám rozhodnout, kterou třídu vytvoří.
- Strukturální vzory: Zabývají se tím, jak jsou třídy a objekty složeny, aby tvořily větší struktury. Příklady:
- Adaptér: Umožňuje spolupráci nekompatibilních rozhraní.
- Dekorátor: Dynamicky přidávejte odpovědnosti k objektům.
- Vzorce chování: Zabývají se komunikací mezi objekty. Příklady:
- Pozorovatel: Definuje závislost mezi objekty jedna k mnoha.
- Strategie: Definuje rodinu algoritmů, každý z nich zapouzdřuje a činí je vzájemně zaměnitelnými.
class Singleton:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super(Singleton, cls).__new__(cls)
return cls._instance
# Uso
s1 = Singleton()
s2 = Singleton()
print(s1 is s2) # Imprime: True
Budoucnost objektově orientovaného programovacího jazyka
- Integrace s jinými paradigmaty: Vidíme trend směrem k jazykům a rámcům, které kombinují OOP s funkčním programováním a dalšími paradigmaty a nabízejí to nejlepší z obou světů.
- OOP v clouduS nástupem cloud computingu se principy OOP přizpůsobují distribuovaným architekturám a mikroslužbám.
- OOP a umělá inteligence: OOP nachází nové aplikace v návrhu systémů umělé inteligence a strojového učení.
- Výraznější jazyky: Nové programovací jazyky hledají způsoby, jak učinit OOP intuitivnějším a výraznějším.
- ŠkálovatelnostVyvíjejí se nové techniky, které zvyšují škálovatelnost objektově orientovaných systémů pro velká data a aplikace.