LAB05 - nvbach91/4IZ278-2020-2021-LS GitHub Wiki

Cvičení 05 - In Code We Thrust.

Povinná četba (na doma)

Náplň cvičení

  • https://eso.vse.cz/~nguv03/cv05/oop/
  • OOP zapouzdření
  • OOP přetěžování metod
  • OOP konstanty, statické proměnné a statické metody
  • OOP abstraktní třídy a abstraktní metody
  • OOP dědičnost
  • OOP rozhraní
  • OOP polymorfismus
  • OOP magické metody
  • phpMyAdmin
  • SQL CREATE TABLE
CREATE TABLE Users (
    Name varchar(255),
    Age int,
    Email varchar(255) 
);
  • SQL INSERT
INSERT INTO Users(Name, Age, Email) VALUES ('Nathan Drake', 38, '[email protected]');
INSERT INTO Users(Name, Age, Email) VALUES ('Samuel Drake', 42, '[email protected]');
INSERT INTO Users(Name, Age, Email) VALUES ('Elena Fisher', 34, '[email protected]');
INSERT INTO Users(Name, Age, Email) VALUES ('Victor Sullivan', 62, '[email protected]');
  • SQL SELECT
SELECT * FROM Users;
SELECT Name, Email FROM Users;
SELECT * FROM Users WHERE Email = '[email protected]';
SELECT * FROM Users WHERE Age > 40;
  • SQL UPDATE
UPDATE Users
SET Age = 39
WHERE Email = '[email protected]';
  • SQL DELETE
DELETE FROM Users WHERE Email = '[email protected]';

Bodovaná samostatná práce na cvičení

  • Vytvořte strukturu tříd a rozhraní pro práci s databázovým souborem. Struktura bude umožňovat operace jako čtení, zápis, změna a odstranění záznamů z souborů (příště už budeme pracovat s databází).

Postup

  • Vytvořte rozhraní DatabaseOperations s operacemi:
    • create (Create),
    • fetch (Read),
    • save (Update),
    • delete (Delete), jejichž implementace bude spočívat v skutečněm čtení, vytváření, modifikaci a mazání záznamů ze souboru a také vypisování hlášek o vykonaných operací, případně s předanými parametry.
  • Vytvořte abstraktní třídu Database implementující toto rozhraní
    • s výchozími konfiguračním vlastnostmi:
      • cesta ke složce databázových souborů
      • přípona databázových souborů
      • odělovač polí v databázovém souboru
    • s magickou metodou
      • __construct pro oznámení instancování konkrétní třídy
      • __toString pro výpis konfiguračních parametrů
  • Vytvořte její podtřídy a naimplementujte zmíněné 4 metody ze rozhraní
    • pro práci s uživateli UsersDB.
    • pro práci produkty ProductsDB.
    • pro práci s objednávkami OrdersDB.
  • V neposlední řadě otestujte vaše implementace vytvářením instancí a voláním jejich metod.
    • zavoláte třeba create a následně ověřte metodou fetch
  • ukázka řešení: https://eso.vse.cz/~nguv03/cv05/oop/15-oopdatabase.php
  • 1 bod dostanete až po