Zápočtová úloha z předmětu KIV/ZSWI OBJEKTOVÝ NÁVRH APLIKACE



Podobné dokumenty
Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal

Java a XML. 10/26/09 1/7 Java a XML

Výčtový typ strana 67

OBJEKTOVÝ NÁVRH APLIKACE pro Porovnávání EEG čepic

Vytváření a použití knihoven tříd

TÉMATICKÝ OKRUH Softwarové inženýrství

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Úvod do programovacích jazyků (Java)

Popis programu EnicomD

SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ

Databáze prodejců. Tlačítka. Vytvoří kartu nového prodejce (Alt+N); Změní vybraného prodejce Uloží nového prodejce nebo změnu (Alt+U);

Experimentální systém pro WEB IR

SRSW4IT Inventarizační SW. Prezentace aplikace. Vedoucí DP: ing. Lukáš Macura Autor: Bc. Petr Mrůzek

Semestrální práce 2 znakový strom

Knihovna XmlLib TXV druhé vydání říjen 2012 změny vyhrazeny

součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

Nemocnice. Prvotní analýza a plán projektu

Informační systém webhostingu

Teoretické minimum z PJV

Algoritmizace prostorových úloh

UJO Framework. revoluční architektura beans. verze

Internetová filmová databáze IFDB

1 Webový server, instalace PHP a MySQL 13

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Knihovna XmlLib TXV první vydání prosinec 2010 změny vyhrazeny

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Principy objektově orientovaného programování

ADT/ADS = abstraktní datové typy / struktury

Zápis programu v jazyce C#

UNIVERZITA PARDUBICE DOPRAVNÍ FAKULTA JANA PERNERA

MBI - technologická realizace modelu

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Archivace relačních databází

Datové typy a struktury

1 Administrace systému Moduly Skupiny atributů Atributy Hodnoty atributů... 4

typová konverze typová inference

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Algoritmizace a programování

SEO OPTIMALIZACE PRO VYHLEDÁVAČE JEDNODUŠE

Knihovna RecDBXLib ZÁZNAMY V DATABOXU TXV

Databázové systémy Cvičení 5.2

17. července :51 z moravec@yahoo.com

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programování v jazyce JavaScript

PŘETĚŽOVÁNÍ OPERÁTORŮ

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Regulární výrazy. Vzory

Tvorba informačních systémů

Programování v C++, 2. cvičení

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica

Paměť počítače. alg2 1

Algoritmizace prostorových úloh

Java a Caché IV: Manipulace s objekty

1. Téma 12 - Textové soubory a výjimky

Proměnné a parametry. predn_08.odt :00:38 1

1. Webový server, instalace PHP a MySQL 13

BALISTICKÝ MĚŘICÍ SYSTÉM

Manuál Multitag čtečka

Aplikace pro srovna ní cen povinne ho ruc ení

[APLIKACE PRO PŘEHRÁVÁNÍ VIDEA - PROJEKT MIAMI - SERVEROVÁ ČÁST]

Artlingua Translation API

Programování v Javě I. Únor 2009

STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE

OOPR_05. Případové studie

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

Webová služba. Popis. Dostupné operace. add_subscriber_groups

Web. Získání informace z internetu Grafické zobrazení dat a jejich struktura Rozšíření funkcí pomocí serveru Rozšíření funkcí pomocí prohlížeče

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Programování v C++ 3, 3. cvičení

Algoritmizace a programování

PŘÍLOHA C Požadavky na Dokumentaci

MOBILNÍ SKLADNÍK. Příručka k základnímu ovládání. Beta verze popisu produktu Aktualizace dokumentu: z 10

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Programátorská příručka

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE

Konfigurační software DTConfig

Kolekce, cyklus foreach

Programování v Javě I. Leden 2008

Kurz Databáze. Přechod na SQL server. Obsah. Vytvoření databáze. Lektor: Doc. Ing. Radim Farana, CSc.

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky. Dokumentace k programu MMDoc

Abstraktní datové typy: zásobník

zapište obslužnou metodu události Click tlačítka a vyzkoušejte chování polevýsledek.text = polečíslo1.text + polečíslo2.text;

Dokumentace k nevizuálnímu rozhraní aplikace DopisOnline

Konstruktory a destruktory

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Střední odborná škola a Střední odborné učiliště, Hořovice

Přehled příkazů pro CLI část aplikace Fits Header Modifier Jan Hlava

Šablonovací systém htmltmpl vypracoval: Michal Vajbar, Šablonovací systém htmltmpl

Základní popis Toolboxu MPSV nástroje

APS Web Panel. Rozšiřující webový modul pro APS Administrator. Webové rozhraní pro vybrané funkce programového balíku APS Administrator

Úvod Informace o prostředí Práce se soubory Regulární výrazy Konec. Programování v C# Soubory a regulární výrazy. Petr Vaněček 1 / 27

Programování v jazyku C# II. 5.kapitola

Soubor jako posloupnost bytů

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Transkript:

Zápočtová úloha z předmětu KIV/ZSWI OBJEKTOVÝ NÁVRH APLIKACE pro (LIKS/2010-03) Robot pro tvorbu webového korpusu 13. 4. 2010 Tým: IT deviants Členové: Lukáš Gemela Michal Karfiol Jan Řeřicha Michal Šmolík Ondřej Trhoň Gemelal@students.zcu.cz MichalKarfiol@seznam.cz Janrer@email.cz Majkl.ro@seznam.cz O.trhon@gmail.com

Obsah 1 ÚVOD... 3 1.1 ÚČEL SYSTÉMU... 3 1.2 TYPOGRAFICKÉ KONVENCE... 3 1.3 SLOVNÍČEK DEFINIC, POJMŮ A ZKRATEK... 3 1.4 ODKAZY NA DALŠÍ DOKUMENTY... 3 2 KONTEXT A ARCHITEKTURA SYSTÉMU... 4 2.1 KONTEXTOVÝ DIAGRAM... 4 2.2 USE-CASE DIAGRAM... 4 2.3 ARCHITEKTURA SYSTÉMU, PŘEHLED PODSYSTÉMŮ... 5 2.4 ZVOLENÁ TECHNOLOGIE, PROGRAMOVACÍ JAZYK AD., DŮVODY... 5 3 TYPY INFORMACÍ ZPRACOVÁVANÉ SYSTÉMEM... 6 3.1 VSTUPNÍ A VÝSTUPNÍ SOUBORY... 6 3.1.1 Vstupní inicializační soubor... 6 3.1.2 Výstupní soubory... 6 3.2 DATABÁZE... 6 4 PODSYSTÉMY... 8 4.1 CRAWLER... 8 4.1.1 UML pro Crawler... 8 4.1.2 Přehled tříd z Crawler... 11 4.1.3 Třídy z Crawler... 11 4.2 KONZOLE... 16 4.2.1 UML pro Konzole... 16 4.2.2 Přehled tříd z Konzole... 16 4.2.3 Třídy z Konzole... 17 4.3 IO_OUTPUT... 18 4.3.1 UML pro IO_Output... 18 4.3.2 Přehled tříd IO_Output... 18 4.3.3 Třídy z IO_Output... 18 5 PŘIŘAZENÍ TŘÍD/MODULŮ PROGRAMÁTORŮM... 19 2

1 Úvod Tento dokument má popisovat návrh softwarového systému. Nejprve bude popsán účel systému, kontext systému a celková architektura. Poslední oddíl dokumentu obsahuje přidělení jednotlivých částí (tříd nebo modulů) programátorům. Návrh systému slouží jako kostra pro implementaci a jako dokumentace pro jeho pozdější údržbu. 1.1 Účel systému Jedná se o nově vyvíjený software v rámci KIV na ZČU, jehož funkcionalita vychází z potřeb vývojového týmu LIKS*. Software slouží k vytváření webového korpusu. Korpus je tvořen databází textů stažených z internetových stránek. Stránky jsou postupně procházeny na základě vzájemných odkazů. Takto jsou procházeny od zadaných počátečních stránek do doby, kdy budou navštíveny všechny stránky českého internetu (s předem zadanými doménami např:.cz dále významné české stránky z mezinárodních domén cs.. Výsledkem činnosti programu jsou množiny tří formátů textových souborů, zařazených do nadefinovaných složek. 1.2 Typografické konvence V dokumentu je pro standardní text použito písmo Times New Roman. Webové odkazy jsou písmem Courier New. Text využitý k popisu příkladů, metod či zdrojového kódu je psán fontem Calibri. Odborná pojmenování jsou psána kurzívou. Slova označená symbolem * jsou vysvětlena v kapitole 1.3 Dokument je členěn do kapitol prvního až čtvrtého řádu. U popisu jednotlivých metod je pro lepší orientaci využito id čísel nejprve očíslovaný seznam jednotlivých metod, následně ta samá čísla užita u tabulek konkrétních metod. 1.3 Slovníček definic, pojmů a zkratek LIKS - laboratoř inteligentních komunikačních systémů - http://liks.fav.zcu.cz/ Crawler počítačový program, určený k automatickému navštěvování webových adres 1.4 Odkazy na další dokumenty Bakalářská práce zabývající se problematikou webového robota: Martin Damek, Masarykova univerzita, Brno 2009, http://is.muni.cz/th/208149/fi_b Stránky webového robota WebSphinx http://www.cs.cmu.edu/~rcm/websphinx/ 3

2 Kontext a architektura systému 2.1 Kontextový diagram 2.2 Use-Case Diagram Diagram znázornění možných interakcí systému s uživatelem: 4

2.3 Architektura systému, přehled podsystémů Podsystémy: Crawler primární funkce systému, procházení webu, zpracovávání obsahů webů IO_Output ukládání výsledných dat, přenos dat s databází Konzole uživatelské interakce, načtení configuračního souboru Systém byl rozdělen do znázorněných modulů, na základě třívrstvé architektury. Dále systém spolupracuje s MySQL databází. Při implementaci byl využit existující webový crawler* WebSphinx. 2.4 Zvolená technologie, programovací jazyk ad., důvody Program je kódován v jazyce Java. Zadavatel netrval na žádném specifickém jazyce. Byla vybrána Java - je to jediný jazyk, kterému rozumí všichni členové týmu a svými vlastnostmi vyhovuje potřebám projektu. Databáze MySQL bude použita z důvodu vysoké paměťové (RAM) náročnosti, pro odkládání dočasných dat. OS Linux je součástí konfugurace serveru poskytnutého zadavatelem. 5

3 Typy informací zpracovávané systémem 3.1 Vstupní a výstupní soubory 3.1.1 Vstupní inicializační soubor Inicializační soubor bude obsahovat nastavovací direktivy pro běh webového robota. Jeho struktura bude odpovídat následujícímu XML schématu: <TargetPath> Cesta k výstupním souborům programu <URL> výčet počátečních URL adres robota <RexExp> regulární výrazy odkazů, které bude rotob akceptovat pro další procházení <MySQLDirectives> direktivy pro připojení robota k MySQL databázi <name> uživ. jméno připojení k MySQL, subdoména <MySQLDirectives> <password> připojení k MySQL, subdoména <MySQLDirectives> <database> Jméno databáze, subdoména <MySQLDirectives> <server> cesta k serveru, subdoména <MySQLDirectives> 3.1.2 Výstupní soubory Výstupní soubory budou organizovány do 3 složek (ODFILTROVANO, ORIGINAL, INFO). V každé bude jeden typ formátu textového souboru(.txt) s výsledným textem. Každý soubor bude pojmenován podle názvu adresáře a doplněn pořadovým trojčíslím (např. odfiltrovano001.txt). Velikosti jednotlivých souborů budou cca. 300MB velikost bude uzpůsobena tak, aby nedošlo k rozdělení ukládaného textu. Schematický obsah souborů dle jednotlivých adresářů: ODFILTROVANO ORIGINAL INFO CtrlD+URL CtrlD+URL URL zdroje textu+cesta k souborům s texty z URL adresy+datum uložení textu obsah tagu <title> čistý text kompletní textový obsah stažené stránky 3.2 Databáze Databáze v projektu slouží k ukládání mezivýsledků procházení a bude implementována z důvodu vysoké náročnosti robota na paměť RAM. Databáze bude reprezentovat frontu odkazů, které jsou určeny k procházení (tabulka LinkToVisitQueue) a databázi stránek, které již byly navštíveny a zpracovány (tabulky Domain a SubDomains). Tabulka LinkToVisitQueue Reprezentuje frontu stránek k projití. Linky uložené ve sloupci LinkToVisit jsou seřazeny podle pořadí přidání linku do databáze (ID), jenž je současně primárním klíčem tabulky. Robot načte vždy link s nejnižším ID v tabulce, provede zpracování linku, přidá na konec tabulky (fronty) nově nalezené odkazy, aktuálně zpracovávaný řádek smaže a přesune se na další iteraci. 6

Tabulky Domain a Subdomains Slouží k co nejrychlejšímu porovnání nalezených nových odkazů s databází již prošlých. V tabulce Domain bude uložen název hostitele serveru stránky, v tabulce Subdomains poté všechny relativní cesty ke stránkám náležejícím serveru. Jednomu hostiteli může příslušet více relativních cest. S databází bude komunikovat rozhraní DBInterface. 7

4 Podsystémy 4.1 Crawler 4.1.1 UML pro Crawler 8

9

10

4.1.2 Přehled tříd z Crawler modul: 4.1.3 Třídy z Crawler Crawler id název třídy 1 Crawler 2 CrawlEvent 3 DBComunicator 4 LinkPredicate 5 RobotExlusion 6 Link 7 URLPredicate 8 DownloadParameters 9 LinkEvent 10 Page 11 HTMLParser 12 PageOutput 13 Regexp 14 RegexpMatcher 15 Tagexp 16 TagexpMatcher 17 Wildcard 1 Crawler robot pro procházení webu void init() void run() void clear() void pause() void stop() visit(page page) boolean shouldvisit (Link l) void expand(page page) String tostring() Link[] getroots() Link[] getcrawledroots() void submit(link link) void submit (Link[] links) void sendcrawlevent (int id) void sendlinkevent (Link l, int id) boolean visited(link link) void markvisited (Link link) void clearvisited() void fetch(worm v) inicializace robota spuštění robota zastaví robota a připraví ho k novému běhu pozastavení činnosti robota zastavení robota() navštíví stránku vrací true pokud může být link následován testuje všechny linky na stránce použitím shouldvisit() vrací jméno robota jako String vrací pole počátečních adres vrací kořeny aktuálního prohledávání vloží nový odkaz do fronty vloží pole odkazů do fronty zašle zprávu o události procházení všem posluchačům CrawlEventListener zašle zprávu o události procházení všem posluchačům LinkEvent true pokud byla stránka navštívena nastaví true pokud byla stránka navštívena smaže pole navštívených linků nastavení paralelního zpracování 11

2 CrawlEvent datová třída, uchovává typy událostí robota při procházení webu CrawlEvent (Crawler crawler, int id) 3 DBComunicator třída pro komunikaci s databází DBComunicator(String server, String jmeno, String heslo) bool findvisited(link link) Link getnextlink() boolean insertvisited(link link) boolean insertnextpage(link link) String[] getstatistika() vytvoří novou instanci pro robota typu Crawler vytvoří nový komunikátor a nastaví jeho connectionstring vrátí, zda byl link už navštívený nebo ne vrátí další adresu k navštívení vloží link mezi navštívené a vrátí informaci o tom, zda se to povedlo vloží link do "fronty" a informuje, zda se to povedlo vrátí statistická data 4 LinkPredicate rozhraní, které implementují třídy pracující s odkazy robota void connected(crawler crawler) void disconnected(crawler crawler) boolean shouldvisit (Link link); napojení na robota odpojení od robota 5 RobotExclusion kontroluje, zdali je na procházené adrese zapnuta ochrana robots.txt vrací true pokud je stránka chráněna boolean disallowed (URL url) robots.txt void clear () Vymaže cache položek robots.txt String website(url url) Vytáhne název domény z URL odkazu String[] getrobotstxt (String website, String useragent) Stáhne robots.txt ze zadané domény boolean readfield (PushbackInputStream in) Parseruje robots.txt 6 Link reprezentuje URL odkaz Link(Tag starttag, Tag endtag, URL base) Link(URL url) Link(File file) Link(String href) void discardcontent() void disconnect() String tourl() String todescription() void parseurl() URL urlfromhref(tag tag, URL base) Tag replacehref(string newhref) vytvoří link na základě start,end HTML tagu a URL adresy vytvoří link na základě URL adresy vytvoří link na základě File vytvoří link na základě URL zadané jako String eliminuje všechny reference na obsah stránky odpojí link od stažené stránky vrací URL linku jako String vrací popis linku parseruje URL vytvoří URL na základě HTML tagu kopíruje start tag linku přesunutím URL 12

7 URLPredicate na základě regulárního výrazu kontroluje nalezené odkazy boolean shouldacton (Page page) vrací true pokud odkaz na Page odpovídá reg. Výrazu 8 DownloadParameters datová třída, ukládá nastavení robota 9 LinkEvent vypisuje události z robota vznikající při procházení webu LinkEvent (Crawler crawler, int id, Link link) String tostring () vytvoří posluchače pro konkrétní link konvertuje událost na vypsatelný String 10 Page reprezentuje webovou stránku, kterou okamžitě parsuje vytvoří stránku stáhnutím a Page (Link link) zparserováním linku vytvoří stránku stáhnutím a Page (Link link, DownloadParameters dp) Page (Link link, DownloadParameters dp, HTMLParser parser) Page (URL url, String html) Page (String content) void download (DownloadParameters dp, HTMLParser parser) void parse (HTMLParser parser) void keepcontent () void discardcontent () boolean hascontent () Text[] getwords () Element[] getelements () Element getrootelement () Link[] getlinks() 11 HTMLParser slouží k rozparserování obsahu HTML stránky zparserováním linku vytvoří stránku stáhnutím a zparserováním linku vytvoří stránku zadáním její URL a HTML obsahu vytvoří stránku zadáním HTML obsahu stáhne stránku a zparseruje jí zparseruje stránku zamkne obsah stránky odemkne obsah stránky testuje jestli je obsah dostupný vrací ze stránky pouze smysluplný obsah vrací ze stránky pouze HTML tagy vrací hlavní tag stránky vrací linky na stránce HTMLParser() vytvoří nový parser void tokenize(page page) provede lexikální analýzu stránky boolean iswhitespace(char c) vrací true, pokud se jedná o bílý znak rozloží stránku jednotlivé elementy v tazích a najde všechny void buildparsetree(page page) odkazy Element makeelement(url base, Tag tag) vytvoří element stromu vrací znak zvláštního HTML "znaku" (např. nedělitelné Character lookupentityref (String name) mezery "nbsp",...) 13

12 PageOutput stahuje ze zpracovávaných stránek jejich obsah a připravuje jej na zápis do souborů PageOutput(Page page) String gettitle() String geturl() String getstranka() String gettext() void write() vytvoří nový stahovač k dané stránce vytáhne z Page obsah tagu title vytáhne z Page její URL vytáhne z Page její obsah včetně tagů vytáhne z Page její smysluplný obsah zapíše výstup do souboru 13 Regexp pracuje s regulárnímy výrazy public Regexp (String pattern) public boolean equals (Object object) void readobject (ObjectInputStream in) void init () public static String escape (String s) String translatefields (String s) public String tostring () public PatternMatcher match (Region region) vytvoří Regexp s regulárním výrazem porovnání dvou objektů s regulárnímy výrazy načte regulární výraz inicializuje regulární výraz odebere určité znaky z regulárního výrazu převe regulární výraz do určité formy vrátí řetězec regulárního výrazu vrátí nově vytvořený objekt RegexpMatcher 14 RegexpMatcher hledání shody regulárního výrazu vytvoří objekt s regulárním výrazem a public RegexpMatcher (Regexp regexp, Region source) regionem protected Region findnext () nalezne další objekt Region 15 Tagexp využívá regulární výrazy uvnitř stránky public Tagexp (String pattern) public String toregexp (String tagexp) void canonicalizetag (StringBuffer output, Tag tag, int j) void canonicalizetagpattern (StringBuffer output, Tag tag) void sortattrs (String[] attrs) String encodeattrvalue (String value) String translatepattern (StringBuffer output, String s, String d) void translatetext (StringBuffer output, String s) public boolean equals (Object object) public String tostring () public PatternMatcher match (Region region) regulární výraz pro hledání vytvoří z řetězce regulární výraz upravení regulárního výrazu upravení regulárního výrazu seřadí řetězce do určitého pořadí převedení do jiného kódování převede regulární výraz do určitého tvaru nahradí rité znaky v řetězci vrátí true, pokud jsou dva objekty shodné vrátí řetězc regulárního výrazu vrátí nově vytvořený objekt TagexMatcher 14

16 TagexpMatcher hledání shody regulárního výrazu vytvoří objekt s regulárním výrazem a public TagexpMatcher (Tagexp tagexp, Region source) Region mapcanonical2region (Page p, String s, int start, int end) int nexttag (String canon, int p) int prevtag (String canon, int p) int indexoftag (String canon, int p) regionem nalezne region uvnitř stránky shodný s regulárním výrazem vrátí pozici dalšího tagu vrátí pozici předchozího tagu vrátí pozici nalezeného tagu 17 Wildcard třída pro zpracování vstupu na regulární výraz public Wildcard (String pattern) public String toregexp (String wildcard) public static String escape (String s) public boolean equals (Object object) public String tostring () vytvoření objektu se vstupním regulárním řetězcem převedení řetězce na regulární výraz odstranění určitých znaků z řetězce vrátí true, pokud jsou dva objekty shodné vrátí řetězc regulárního výrazu 15

4.2 Konzole 4.2.1 UML pro Konzole 4.2.2 Přehled tříd z Konzole modul: Konzole id název třídy 1 NactiConfig 2 Konzole 3 Statistika 16

4.2.3 Třídy z Konzole 1 NactiConfig získává vstupní parametry pro program ze souboru NactiConfig() void nactidata() String ParsujConfig(String nezpracovano) vytvoření instance třídy NactiConfig načte data ze souboru rozparsuje načtená data na vstupní parametry 2 Konzole spravuje konzoly a ovládá aplikaci Konzole() vytvoření instance třídy Konzole void novarelace() spuštění nové relace void pokracovanivrelaci() pokračování v předchozí relaci void vypis() výpis právě procházených URL adres void statistika() výpis statistiky procházení na webu void konec() ukončení aplikace 3 Statistika vypíše informace o procházení webových stránek Statistika() long pocetnavstivenychadres() long velikostkorpusu() void vypisstatistiky() void ulozenistatistiky() vytvoření instance třídy Statistika zjistí počet navštívených webových adres zjistí velikost paměti uložených dat (=korpusu) vypíše počet navštívených URL adres a velikost paměti uložených dat uložení výpisu statistiky do souboru 17

4.3 IO_Output 4.3.1 UML pro IO_Output 4.3.2 Přehled tříd IO_Output modul: IO_Output id název třídy 1 IOWriter 2 DBInterfeace 4.3.3 Třídy z IO_Output 1 IOWriter zajišťuje zápis dat do souboru IOWriter(String filepath, String data) IOWriter(String filepath) IOWriter(String data) vytvoří nový soubor a zapíše do něj data vytvoří nový soubor zapíše data do souboru 2 DBInterfeace třída pro samotnou práci s databází vytvoří nové rozhranní pro komunikaci s DB a DBInterface(String server, String jmeno, String heslo) nastaví jeho connectionstring Link nextlink() vytáhne z databáze další link k navštívení boolean wasvisited(link link) zjistí, zda byl link už navštívený nebo ne vloží link do databáze a informuje, zda se to boolean addlink(link link) povedlo 18

5 Přiřazení tříd/modulů programátorům Znázornění významné práce programátorů (při vytváření/zásadním-přetváření tříd programu): Třída Modul Programátor(ři) HTMLParser.java Crawler Gemela, Šmolík PageOutput.java Crawler Gemela, Šmolík IOWriter.java IO_Output Gemela, Šmolík Crawler.java Crawler Gemela, Šmolík Page.java Crawler Gemela, Šmolík DBInterface.java IO_Output Trhoň DBComunicator.java Crawler Trhoň NactiConfig.java Konzole Karfiol, Řeřicha Konzole.java Konzole Karfiol, Řeřicha Statistika.java Konzole Karfiol, Řeřicha 19