Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Дадена е класата Applicant (кандидат за евалуација) со име, кредитен резултат (credit score), работен стаж (experience) и дали има криминално досие (criminal record). Исто така, даден е интерфејс за евалуација на кандидати Evaluator со еден метод boolean evaluate(Applicant applicant) и енумерација со следните видови на евалуатори:
- Кандидатот ја поминува евалуацијата (методот враќа true) ако:
- NO_CRIMINAL_RECORD - нема криминално досие
- MORE_EXPERIENCE - има барем 10 години работен стаж
- MORE_CREDIT_SCORE - има кредитен резултат од минимум 500
- NO_CRIMINAL_RECORD_AND_MORE_EXPERIENCE - нема криминално досие и има барем 10 години работен стаж
- MORE_EXPERIENCE_AND_MORE_CREDIT_SCORE - има барем 10 години работен стаж и има кредитен резултат од минимум 500
- NO_CRIMINAL_RECORD_AND_MORE_CREDIT_SCORE - нема криминално досие и има кредитен резултат од минимум 500.
- Ваша задача е да го имплементирате методот build(Evaluator.TYPE type) во класата EvaluatorBuilder, кој ќе враќа објект од соодветна имплементација на интерфејсот Evaluator за соодветниот тип на евалуација. Ако типот на евалуација не е некој од наведените, методот треба да фрли исклучок од тип InvalidEvaluation.
- За добро дизајнирано решение (ќе биде објавено по завршувањето на испитот) ќе се добиваат бонус 10 поени.
- Почетен код:
- import java.util.Scanner;
- public class ApplicantEvaluationTest {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- String name = scanner.nextLine();
- int creditScore = scanner.nextInt();
- int employmentYears = scanner.nextInt();
- boolean hasCriminalRecord = scanner.nextBoolean();
- int choice = scanner.nextInt();
- Applicant applicant = new Applicant(name, creditScore, employmentYears, hasCriminalRecord);
- Evaluator.TYPE type = Evaluator.TYPE.values()[choice];
- Evaluator evaluator = null;
- try {
- evaluator = EvaluatorBuilder.build(type);
- System.out.println("Applicant");
- System.out.println(applicant);
- System.out.println("Evaluation type: " + type.name());
- if (evaluator.evaluate(applicant)) {
- System.out.println("Applicant is ACCEPTED");
- } else {
- System.out.println("Applicant is REJECTED");
- }
- } catch (InvalidEvaluation invalidEvaluation) {
- System.out.println("Invalid evaluation");
- }
- }
- }
- class Applicant {
- private String name;
- private int creditScore;
- private int employmentYears;
- private boolean hasCriminalRecord;
- public Applicant(String name, int creditScore, int employmentYears, boolean hasCriminalRecord) {
- this.name = name;
- this.creditScore = creditScore;
- this.employmentYears = employmentYears;
- this.hasCriminalRecord = hasCriminalRecord;
- }
- public String getName() {
- return name;
- }
- public int getCreditScore() {
- return creditScore;
- }
- public int getEmploymentYears() {
- return employmentYears;
- }
- public boolean hasCriminalRecord() {
- return hasCriminalRecord;
- }
- @Override
- public String toString() {
- return String.format("Name: %s\nCredit score: %d\nExperience: %d\nCriminal record: %s\n",
- name, creditScore, employmentYears, hasCriminalRecord ? "Yes" : "No");
- }
- }
- interface Evaluator {
- enum TYPE {
- NO_CRIMINAL_RECORD,
- MORE_EXPERIENCE,
- MORE_CREDIT_SCORE,
- NO_CRIMINAL_RECORD_AND_MORE_EXPERIENCE,
- MORE_EXPERIENCE_AND_MORE_CREDIT_SCORE,
- NO_CRIMINAL_RECORD_AND_MORE_CREDIT_SCORE,
- INVALID // should throw exception
- }
- boolean evaluate(Applicant applicant);
- }
- class EvaluatorBuilder {
- public static Evaluator build(Evaluator.TYPE type) throws InvalidEvaluation {
- }
- }
- Решение:
- */
- import java.util.Scanner;
- public class ApplicantEvaluationTest {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- String name = scanner.nextLine();
- int creditScore = scanner.nextInt();
- int employmentYears = scanner.nextInt();
- boolean hasCriminalRecord = scanner.nextBoolean();
- int choice = scanner.nextInt();
- Applicant applicant = new Applicant(name, creditScore, employmentYears, hasCriminalRecord);
- Evaluator.TYPE type = Evaluator.TYPE.values()[choice];
- Evaluator evaluator = null;
- try {
- evaluator = EvaluatorBuilder.build(type);
- System.out.println("Applicant");
- System.out.println(applicant);
- System.out.println("Evaluation type: " + type.name());
- if (evaluator.evaluate(applicant)) {
- System.out.println("Applicant is ACCEPTED");
- } else {
- System.out.println("Applicant is REJECTED");
- }
- } catch (InvalidEvaluation invalidEvaluation) {
- System.out.println("Invalid evaluation");
- }
- }
- }
- class Applicant {
- private String name;
- private int creditScore;
- private int employmentYears;
- private boolean hasCriminalRecord;
- public Applicant(String name, int creditScore, int employmentYears, boolean hasCriminalRecord) {
- this.name = name;
- this.creditScore = creditScore;
- this.employmentYears = employmentYears;
- this.hasCriminalRecord = hasCriminalRecord;
- }
- public String getName() {
- return name;
- }
- public int getCreditScore() {
- return creditScore;
- }
- public int getEmploymentYears() {
- return employmentYears;
- }
- public boolean hasCriminalRecord() {
- return hasCriminalRecord;
- }
- @Override
- public String toString() {
- return String.format("Name: %s\nCredit score: %d\nExperience: %d\nCriminal record: %s\n", name, creditScore,
- employmentYears, hasCriminalRecord ? "Yes" : "No");
- }
- }
- interface Evaluator {
- enum TYPE {
- NO_CRIMINAL_RECORD,
- MORE_EXPERIENCE,
- MORE_CREDIT_SCORE,
- NO_CRIMINAL_RECORD_AND_MORE_EXPERIENCE,
- MORE_EXPERIENCE_AND_MORE_CREDIT_SCORE,
- NO_CRIMINAL_RECORD_AND_MORE_CREDIT_SCORE, INVALID // should throw
- // exception
- }
- boolean evaluate(Applicant applicant);
- }
- class EvaluatorBuilder {
- public static Evaluator build(Evaluator.TYPE type) throws InvalidEvaluation {
- return new Evaluation(type);
- }
- }
- class Evaluation implements Evaluator {
- private Evaluator.TYPE type;
- public Evaluation(Evaluator.TYPE type) {
- this.type = type;
- }
- public boolean moreExperience(int years) {
- if (years > 10)
- return containsMoreExperience();
- return false;
- }
- public boolean moreCreditScore(int score) {
- if (score >= 500)
- return containsMoreScoreCredit();
- return false;
- }
- public boolean noCriminalRecord(boolean hasRecord) {
- if(!hasRecord)
- return containsNoCriminalRecord();
- return false;
- }
- public boolean containsNoCriminalRecord() {
- if (type.toString().contains(Evaluator.TYPE.NO_CRIMINAL_RECORD.toString()))
- return true;
- return false;
- }
- public boolean containsMoreExperience() {
- if (type.toString().contains(Evaluator.TYPE.MORE_EXPERIENCE.toString()))
- return true;
- return false;
- }
- public boolean containsMoreScoreCredit() {
- if (type.toString().contains(Evaluator.TYPE.MORE_CREDIT_SCORE.toString()))
- return true;
- return false;
- }
- public boolean evaluate(Applicant a) {
- if (moreExperience(a.getEmploymentYears()) && noCriminalRecord(a.hasCriminalRecord())) {
- return true;}
- else if(moreExperience(a.getEmploymentYears()) && moreCreditScore(a.getCreditScore())) {
- return true;}
- else if(noCriminalRecord(a.hasCriminalRecord()) && moreCreditScore(a.getCreditScore())) {
- return true;}
- if (containsNoCriminalRecord() && !noCriminalRecord(a.hasCriminalRecord())) {
- return false;
- }
- else if (containsMoreExperience() && !moreExperience(a.getEmploymentYears())) {
- return false;
- }
- else if (containsMoreScoreCredit() && !moreCreditScore(a.getCreditScore())) {
- return false;
- }
- if(type.equals(Evaluator.TYPE.INVALID.toString()))
- return false;
- return true;
- }
- }
- class InvalidEvaluation extends Exception {
- }
Advertisement
Add Comment
Please, Sign In to add comment