Diferență între revizuiri ale paginii „Colocviu POO 2015-2016”
Linia 2: | Linia 2: | ||
Să se scrie o clasă <code>seriaf.poo.colocviu.LengthPasswordPolicy</code>, care să implementeze interfața <code>seriaf.poo.colocviu.PasswordPolicy</code> cu următoarele metode: | Să se scrie o clasă <code>seriaf.poo.colocviu.LengthPasswordPolicy</code>, care să implementeze interfața <code>seriaf.poo.colocviu.PasswordPolicy</code> cu următoarele metode: | ||
− | * Un constructor <code>LengthPasswordPolicy(int minLength, int maxLength)<code> care va arunca o excepție de tip <code>java.lang.IllegalArgumentException</code> dacă minLength e mai mic decât 0, dacă maxLength e mai mic sau egal decât 0 sau dacă minLength e mai mare ca maxLength. | + | * Un constructor <code>LengthPasswordPolicy(int minLength, int maxLength)</code> care va arunca o excepție de tip <code>java.lang.IllegalArgumentException</code> dacă minLength e mai mic decât 0, dacă maxLength e mai mic sau egal decât 0 sau dacă minLength e mai mare ca maxLength. |
* Metoda <code>boolean verify(String username, String[] oldPasswords, String newPassword)</code> care să întoarcă ''true'' dacă '''newPassword''' are lungimea mai mare sau egală decât '''minLength''' și mai mică sau egală decât '''maxLength'''. Dacă '''newPassword''' este '''null''', metoda va întoarce ''false'' | * Metoda <code>boolean verify(String username, String[] oldPasswords, String newPassword)</code> care să întoarcă ''true'' dacă '''newPassword''' are lungimea mai mare sau egală decât '''minLength''' și mai mică sau egală decât '''maxLength'''. Dacă '''newPassword''' este '''null''', metoda va întoarce ''false'' | ||
Versiunea de la data 20 ianuarie 2016 08:29
Să se scrie o interfață seriaf.poo.colocviu.PasswordPolicy
care să definească o singură metodă: boolean verify(String username, String[] oldPasswords, String newPassword)
.
Să se scrie o clasă seriaf.poo.colocviu.LengthPasswordPolicy
, care să implementeze interfața seriaf.poo.colocviu.PasswordPolicy
cu următoarele metode:
- Un constructor
LengthPasswordPolicy(int minLength, int maxLength)
care va arunca o excepție de tipjava.lang.IllegalArgumentException
dacă minLength e mai mic decât 0, dacă maxLength e mai mic sau egal decât 0 sau dacă minLength e mai mare ca maxLength. - Metoda
boolean verify(String username, String[] oldPasswords, String newPassword)
care să întoarcă true dacă newPassword are lungimea mai mare sau egală decât minLength și mai mică sau egală decât maxLength. Dacă newPassword este null, metoda va întoarce false
Să se scrie o clasă seriaf.poo.colocviu.RepeatPasswordPolicy
, care să implementeze interfața seriaf.poo.colocviu.PasswordPolicy
cu următoarea metodă:
- Metoda
boolean verify(String username, String[] oldPasswords, String newPassword)
care să întoarcă true dacă newPassword este egal nu oricare din elementele din vectorul oldPasswords. *Dacă newPassword este null, metoda va întoarce false. Dacă oldPasswords este null, metoda va întoarce true.
Să se scrie o clasă seriaf.poo.colocviu.UserNamePasswordPolicy
, care să implementeze interfața seriaf.poo.colocviu.PasswordPolicy
cu următoarea metodă:
- Metoda
boolean verify(String username, String[] oldPasswords, String newPassword)
care să întoarcă true dacă newPassword este inclus în username sau dacă username este inclus în newPassword. Dacă newPassword sau username este null, metoda va întoarce false.
Să se scrie o clasă seriaf.poo.colocviu.PasswordPolicySet
, care să implementeze interfața seriaf.poo.colocviu.PasswordPolicy
cu următoarele metode:
- Un constructor
PasswordPolicySet(int minPassRules)
care va arunca o excepție de tip
java.lang.IllegalArgumentException
dacă minPassRules e mai mic decât 0. - O metodă void
addPolicy(PasswordPolicy policy)
care să adauge policy într-o listă internă menținută în obiect. - Metoda
boolean verify(String username, String[] oldPasswords, String newPassword)
care să întoarcă true dacă cel puțin minPassRules reguli din lista menținută întorc true. Dacă minPassRules este 0, înseamnă că TOATE regulile din listă trebuie să întoarcă true pentru ca metoda să întoarcă true.
Pentru testare puteți folosi următoarea clasă:
package seriaf.poo.colocviu;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
PasswordPolicy set = createSet();
Scanner scanner = new Scanner(System.in);
System.out.print("Username: ");
String username = scanner.next();
System.out.print("Number of old passwords: ");
int oldPasswordCount = scanner.nextInt();
String[] oldPasswords = new String[oldPasswordCount];
for (int i = 0; i < oldPasswordCount; i++) {
System.out.printf("Old password #%d: ", i + 1);
oldPasswords[i] = scanner.next();
}
System.out.print("New password: ");
String newPassword = scanner.next();
System.out.println("Password meets the password policies: " + set.verify(username, oldPasswords, newPassword));
}
private static PasswordPolicy createSet() {
PasswordPolicySet set = new PasswordPolicySet(0);
set.addPolicy(new LengthPasswordPolicy(6, 12));
set.addPolicy(new RepeatPasswordPolicy());
set.addPolicy(new UserNamePasswordPolicy());
return set;
}
}