Colocviu POO 2015-2016: Diferență între versiuni

De la WikiLabs
Jump to navigationJump to search
(Ștergerea conținutului paginii)
Fără descriere a modificării
Linia 1: Linia 1:
Să se scrie o interfață <code>seriaf.poo.colocviu.PasswordPolicy</code> care să definească o singură metodă: <code>boolean verify(String username, String[] oldPasswords, String newPassword)</code>.


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.
* 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’’
Să se scrie o clasă <code>seriaf.poo.colocviu.RepeatPasswordPolicy</code>, care să implementeze interfața <code>seriaf.poo.colocviu.PasswordPolicy</code> cu următoarea metodă:
*Metoda <code>boolean verify(String username, String[] oldPasswords, String newPassword)</code> 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ă <code>seriaf.poo.colocviu.UserNamePasswordPolicy</code>, care să implementeze interfața <code>seriaf.poo.colocviu.PasswordPolicy</code> cu următoarea metodă:
* Metoda <code>boolean verify(String username, String[] oldPasswords, String newPassword)</code> 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ă <code>seriaf.poo.colocviu.PasswordPolicySet</code>, care să implementeze interfața <code>seriaf.poo.colocviu.PasswordPolicy</code> cu următoarele metode:
* Un constructor <code>PasswordPolicySet(int minPassRules)<code> care va arunca o excepție de tip <code>java.lang.IllegalArgumentException</code> dacă minPassRules e mai mic decât 0.
* O metodă void <code>addPolicy(PasswordPolicy policy)</code> care să adauge ’’’policy’’’ într-o listă internă menținută în obiect.
* Metoda <code>boolean verify(String username, String[] oldPasswords, String newPassword)</code> 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ă:
<syntaxhighlight lang=”java”>
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;
    }
}
</syntaxhighlight>

Versiunea de la data 20 ianuarie 2016 08:14

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 tip java.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;
    }

}