Diář v OOP... – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Diář v OOP... – C / C++ – Fórum – Programujte.comDiář v OOP... – C / C++ – Fórum – Programujte.com

 

Tomiard
~ Anonymní uživatel
6 příspěvků
1. 1. 2008   #1
-
0
-

Máme za úkol na Objěktově orientované programování naprogramovat v jakémkoliv jazyce Diář.


Ten má umět:
- Ukládání osobních událostí do diáře
- události jednorázové i opakované
- upozornění na blížící se události
- zobrazení (export/tisk) týdenního/měsíčního kalendáře

Prvky:
- správné a logické použití objektů (ne jako skladiště pro procedury/funkce)
- důsledné oddělení vrstev vícevrstvého návrhu aplikace
- uložení statických dat do souboru (v libovolném formátu)
- zákaz použití databáze



Vůbec nevím, jak začít... Je mi jasný, že mi to tu nikdo asi nevytvoříte, i když bych byl moc vděčný. Ale aspoň nějaký podrovnější návod, kdyby jste někdo měl.. Díky moc

Nahlásit jako SPAM
IP: 213.226.208.–
bukaj0
Věrný člen
1. 1. 2008   #2
-
0
-

Tomiard
Jelikož má jít o vícevrstý návrh, předpokládám, že je tím myšleno MVC (Model-View-Controller). Jednoduše řečeno Model jsou data aplikace. V případě diáře by se jednalo např. o události. Takže bys měl třídu Udalost, kde každá její instance by reprezentovala jednu událost. View se stará o zobrazování dat. Předpokládám, že by se jednalo o aplikaci s GUI, tudíž by View zobrazoval tabulky s měsíci, tlačítka atp. A Controller řídí chod. Bere data z Modelu a předává je Viewu.

Potom je už jednoduché popsat, co se po tobě požaduje:

- Ukládání osobních událostí do diáře
Vytvoří novou instanci třídy Udalost a přegeneruje View.

- události jednorázové i opakované
Každá instance Udalosti bude na dotaz, kdy vracet pole hodnot. Když bude instance vytvořena s opakováním, vrátí pole, kde bude jako prvním časem čas zadaný a poté ještě několik dalších časů posunutých o časový určený časový interval.

- upozornění na blížící se události
Např. budeš mít Controller s názvem BliziciSeUdalosti. Ten se zeptá všech instancí třídy Udalost kdy. A když bude ve vráceném poli čas menší, než je uživatelem nastavený interval mezi nynějším časem a vráceným časem, Controller předá Viewu událost k zobrazení.

- zobrazení (export/tisk) týdenního/měsíčního kalendáře
Budeš mít Controller Tyden (resp. Mesic), který bude Viewu předávat události tohoto týdne (resp. měsíce). A když bude mět dojít na export/tisk, tak se použije jiná třída Viewu. Např. budeš mít třídu Gui, která bude zpracovávat data do okýnek a pak třídu Pdf, která navíc dostane soubor, do kterého uloží tabulku s událostmi.

- správné a logické použití objektů (ne jako skladiště pro procedury/funkce)
Dám příklad, jak to může být poskládané. Budeš mít základní objekt Aplikace (někdy také zvaný Front Controller), který bude řídit chod všeho. Přenecháš mu prostor, aby činil svou práci. Poněvadž na začátku nemá žádné podněty, vezme defaultní Controller a předá mu práci. Ten si podle toho, co má dělat vytvoří instanci Viewu (zobrazení uživateli/export/tisk), které předá data Modelu (instance třídy Udalost). Přenechá pole působnosti instanci Viewu, jež zobrazí data. A když se jedná např. o instanci Gui, tak ta zobrazí tlačítka, které po kliku kontaktují instanci Aplikace, že má použít jiný Controller. View skončí svou práci. Controller ukončí svou práci. Aplikace zavolá jiný Controller.

- důsledné oddělení vrstev vícevrstvého návrhu aplikace
To je snad již jasné.

- uložení statických dat do souboru (v libovolném formátu)
Nemusím snad popisovat. Ale jako formát doporučuji XML. Má knihovnu snad pro každý jazyk, proto je práce s ním jednoduchá.

(Obávám se, že jsem to moc dobře nevysvětlil :) takže doporučuji Google. Chápu, že by pro tebe bylo nejlepší, kdybych ti sem dal zdrojový kód, ale od čeho by pak ten úkol byl :) I tak doufám, že ti to alespoň k nečemu bude.)

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Tomiard
~ Anonymní uživatel
6 příspěvků
3. 1. 2008   #3
-
0
-

Díky. Ale zkoušel jsem to udělat a stejně mi to nejde...
Kdyby se tu našel někdo, pro koho by to byla brnkačka a měl chvilku, tak bych byl moc rád. Může to být v jakýmkoliv jazyce - my jsme se učili základy Pascalu, C, PHP a pak Delphi. Tak by bylo nejlepší v něčm z tohodle... Kdyby se někomu chtělo, tak moc díky...:-)

Nahlásit jako SPAM
IP: 213.226.208.–
yaqwsx+9
Posthunter
3. 1. 2008   #4
-
0
-

NJejsem si jist, zdali C obsahuje OOP......Nemyslel jsi C++?

Nahlásit jako SPAM
IP: 85.160.69.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
3. 1. 2008   #5
-
0
-

V PHP je to prace minimalne tak na 5-10 hodin, v C++ jeste na vic. To ti nikdo neudala. Tady ti lidi poradi s dilcimi problemy (coz by melo stacit, zas tak slozita uloh to neni). A bukaj uz ti zpracoval strukturu te veci. Co vic chtit...zkousels to vybec?

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
bukaj0
Věrný člen
3. 1. 2008   #6
-
0
-

Tomiard
Ale zkoušel jsem to udělat a stejně mi to nejde...
Ukaž výsledek svého prozatimního snažení. Ani za mák ti nevěřím.

Jinak jseš chlapče líný jako veš. Myslíš, že v životě za tebe kdejaký "kolemjdoucí" udělá tvou práci... a ještě k tomu zadarmo? Myslíš si, že to takhle v reálném životě funguje? Nemyslíš, že lidé na tomto fóru mají i jiné věci na práci než za tebe dělat úkoly do školy? A to naprosto za nic (maximálně za poděkování (ale kdo z toho dneska vyžije, že...))?

A pokud jseš tedy tak líný a nic nedokážeš, jdi do sekce Inzerce (http://programujte.com/index.php?akce=diskuze&kam=diskuze&sekce=103-inzerce) a tam podej seriozní nabídku.

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Tomiard
~ Anonymní uživatel
6 příspěvků
8. 1. 2008   #7
-
0
-

Něco jsem spíchnul, ale fakt tomu vůbec nerozumím... Akorát teď potřebuju ten program odprezntovat (ještě teda není hotový, ani být v době prezentace nemusí). A do prezntace bych potřeboval nějaký obrázek UML nebo nějak prostě zakrerklit strukturu...

Tady jsem se pokusil nějak splnit rozvrstvení:

<?php

class data {
private $radek;
public $udalosti = array();
const ODDELOVAC = "::;::";
const SOUBOR = "data/udalosti.txt";

function __construct(){
$this->radek = file($soubor);
}

public function pridat_udalost($udalost_nazev,$udalost_datum,$udalost_cas,$udalost_opakovani)

public function vymaz_udalost($cislo_radku) {


private function generuj_udalosti($od,$do,$zdroj,$cislo_radku) {


public function ziksat_udalosti($od,$do) {

}
class prezencni {
public function zobraz_formular($dalsi) {

}
public function zobraz_tyden($datum) {
$datum1 = $datum-dayofweek($datum);
$datum2 = $datum + (dayoweek($datum)-7);
data::ziksat_udalosti($datum1,$datum2);
$udalosti = data::ziksat_udalosti($datum1,$datum2);
//pak se vyreslí kalendář...
echo "<table><tr><td>$udalosti</td></tr></table>";
}
}
class aplikacni {
public function pridej_udalost(){
data::p ridat_udalost();
prezencni::zobraz_formular(1);
}
}
?>


Jenže teď nevím, jak to zakreslit. Nemám tam žádnou dědičnost... Prostě vnořuju objekty jeden do druhého... Repstive
volám z aplikace funkci z prezentační řídy a datové...

Kdyby jste mi někdo poradil, jak to zakreslit... Já se v tom fakt nevyznám... Díky

Nahlásit jako SPAM
IP: 213.226.208.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 101 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý