W moodle'u jest dostępna treść pierwszego dużego zadania zaliczeniowego. Termin oddania: 30 kwietnia 2014 r.
Ćwiczenia
URI (ang.
Uniform Resource Identifier) jest standardem internetowym umożliwiającym łatwą identyfikację zasobów w sieci. Poniżej fragment odpowiedniego dokumentu RFC, który określa jak wygląda URI.
/**
* An example URI and its component parts. [rfc3986]
*
* foo://example.com:8042/over/there?name=ferret#nose
* \_/ \______________/\_________/ \_________/ \__/
* | | | | |
* scheme authority path query fragment
*
* The pattern is
* <scheme> : <authority> / <path> ? <query> # <fragment>
*/
oraz szkielet walidatora sprawdzającego poprawność URI.
public class CustomURIValidator {
String scheme, authority, path, query, fragment;
public void validate(String uri) throws ... {
...
validateScheme();
validateAuthority();
validatePath();
}
/**
* @return true if c is either ALPHA, DIGIT, ’-’, ’.’, ’_’
* or ’~’
**/
public static boolean isUnreservedCharacter(char c) { ... }
private void validateAuthority() throws EmptyComponentException,
ComponentTooLongException {
if (authority == null || authority.length() < 1)
throw new EmptyComponentException("authority");
if (authority.length() > 255)
throw new ComponentTooLongException("authority",255);
}
private void validatePath() throws ComponentTooLongException,
IllegalCharacterException {
//leave blank
}
private void validateScheme() throws ... { ... }
}
-
Uzupełnij metodę validate o kod dzielący URI na składowe i przypisujący składowe
do odpowiednich pól walidatora.
- Uzupełnij metodę validateScheme() tak, aby spełnione były następujące wymagania:
- schemat musi być niepusty.
- schemat nie może być dłuższy niż 255 znaków.
- schemat może zawierać jedynie litery, cyfry, myślnik, kropkę, znak podkreślenia
lub tyldę (tzw. unreserved characters).
Jeśli któreś z powyższych wymagań nie jest spełnione, powinien być rzucony odpowiedni
wyjątek.
public class IllegalCharacterException extends Exception {
public IllegalCharacterException(String msg) {
super(msg);
}
}
public class EmptyComponentException extends Exception {
public EmptyComponentException(String msg) {
super(msg);
}
}
public class ComponentTooLongException extends Exception {
public ComponentTooLongException(String component, int expected) {
super("The " + component + " component can not be longer than"
+ expected);
}
}
- Dodajmy nowy wyjątek InvalidCustomURIException:
public class InvalidCustomURIException extends Exception {/*...*/}
public class IllegalCharacterException
extends InvalidCustomURIException {/*...*/}
public class EmptyComponentException
extends InvalidCustomURIException {/*...*/}
public class ComponentTooLongException
extends InvalidCustomURIException {/*...*/}
Zmień kod metody validate w ten sposób, aby rzucany był jeden wyjątek InvalidCustomURIException
zawierający w sobie informacje o wszystkich błędach ze wszystkich składowych. Możesz
zmienić kod wyjątków.
Laboratorium
- Zaprojektuj interfejs Stos reprezentujący stos liczb całkowitych.
- Zaimplementuj interfejs Stos za pomocą tablicy liczb
całkowitych. Rozmiar tablicy ma być podany w konstruktorze. Twoja
implementacja powinna rzucać odpowiedni wyjątki (trzeba je zdefiniować)
przy próbie zdjęcia elementu z pustego stosu i położenia elementu na
przepełniony stos.
- Napisz klasę z testami JUnit dla Twojego stosu (albo dla implementacji kolegi z ławki obok).
- Napisz program, który wczytuje wyrażenie w odwrotnej notacji
polskiej (+, −, *, /) i wylicza jego wartość używając stosu z
poprzedniego zadania.
W tym tygodniu z powodu pierwszego zadania zaliczeniowego nie ma pracy domowej. Ale za tydzień będzie :)
Brak komentarzy:
Prześlij komentarz