Moduļa 2.2. vingrinājumi

exercise21: Interfeisi

Kas jādara:

  • Nokompilēt un palaist doto aplikācijas paraugu direktorijā "exercise21".
  • Izmanojot projektēšanas šablonu "Composite" un "Singleton", papildināt direktorijā exercise21 doto Javas aplikāciju
  • Izlabot "Singleton" kodu klasē ContentSystem tā, lai "ContentSystem" instance inicializētos jau statiskajā koda daļā (kā statiskais klases mainīgais, vai arī statisko inicializāciju blokā), nevis pirmo reizi izsaucot "getContentSystem()".
  • Deklarēt, ka arī "Directory" klase implementē interfeisu "ContentComponent" un implementēt tur abas HTML iegūšanas metodes (sk. paraugu klasē "Topic"). Metodē compactHTMLString() norādīt direktorijas failu bufera izmēru un failu kopapjomu baitos. Metodē completeHTMLString sadrukāt visu direktorijas failu (gan dokumentu, gan bilžu) kompaktos HTMLus.
  • Atkomentēt "directory.completeHTMLString()" izsaukumu failā "TestCMS.java" un palaist aplikāciju.

exercise22: Iekšējās klases: Failu uzskaitījums direktorijā

Mērķis

  • Iepazīties ar interfeisu FilenameFilter
  • Ar šī interfeisa palīdzību uzkonstruēt anonīmu iekšējo klasi, kurā ir pārdefinēta metode "accept"
  • Visiem Javas failiem programmas izejtekstā norādītajā direktorijā drukāt nosaukumu un garumu baitos, tos atdalot ar "\t" (tabulācijas) simbolu

Kas jādara:

  • Izmantot klases File metodi listFiles(FilenameFilter), lai iegūtu kādā iepriekšējā laboratorijas darba direktorijā visus failus ar paplašinājumu ".java".
  • Lietot funkcijas File.getName(), File.length(), lai noskaidrotu katra atrastā Javas faila vārdu un tipu. Izdrukāt to uz standarta izvades.

Programmas fragments, kurš inicializē masīvu ar visiem Javas failiem dotajā direktorijā, atrodams šeit:

import java.io.*; 

public class exercise22 {
    public static void main(String[] args) {
        File d = new File("c:\\javakursi\\exercise21"); 
        File[] javafiles = d.listFiles(new FilenameFilter() {
            public boolean accept(File dir, String name) {
                return name.endsWith(".java"); 
            }               
        }); 
                // Papildiniet šo kodu, lai katram Javas failam izdrukātu 
                // nosaukumu un izmēru baitos. 
    }
}