kristina7

НП - Евалуатор

Nov 14th, 2018
340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.80 KB | None | 0 0
  1. /*
  2. Дадена е класата Applicant (кандидат за евалуација) со име, кредитен резултат (credit score), работен стаж (experience) и дали има криминално досие (criminal record). Исто така, даден е интерфејс за евалуација на кандидати Evaluator со еден метод boolean evaluate(Applicant applicant) и енумерација со следните видови на евалуатори:
  3.  
  4. Кандидатот ја поминува евалуацијата (методот враќа true) ако:
  5.  
  6. NO_CRIMINAL_RECORD - нема криминално досие
  7. MORE_EXPERIENCE - има барем 10 години работен стаж
  8. MORE_CREDIT_SCORE - има кредитен резултат од минимум 500
  9. NO_CRIMINAL_RECORD_AND_MORE_EXPERIENCE - нема криминално досие и има барем 10 години работен стаж
  10. MORE_EXPERIENCE_AND_MORE_CREDIT_SCORE - има барем 10 години работен стаж и има кредитен резултат од минимум 500
  11. NO_CRIMINAL_RECORD_AND_MORE_CREDIT_SCORE - нема криминално досие и има кредитен резултат од минимум 500.
  12. Ваша задача е да го имплементирате методот build(Evaluator.TYPE type) во класата EvaluatorBuilder, кој ќе враќа објект од соодветна имплементација на интерфејсот Evaluator за соодветниот тип на евалуација. Ако типот на евалуација не е некој од наведените, методот треба да фрли исклучок од тип InvalidEvaluation.
  13.  
  14. За добро дизајнирано решение (ќе биде објавено по завршувањето на испитот) ќе се добиваат бонус 10 поени.
  15.  
  16. Почетен код:
  17.  
  18. import java.util.Scanner;
  19.  
  20. public class ApplicantEvaluationTest {
  21.     public static void main(String[] args) {
  22.         Scanner scanner = new Scanner(System.in);
  23.         String name = scanner.nextLine();
  24.         int creditScore = scanner.nextInt();
  25.         int employmentYears = scanner.nextInt();
  26.         boolean hasCriminalRecord = scanner.nextBoolean();
  27.         int choice = scanner.nextInt();
  28.         Applicant applicant = new Applicant(name, creditScore, employmentYears, hasCriminalRecord);
  29.         Evaluator.TYPE type = Evaluator.TYPE.values()[choice];
  30.         Evaluator evaluator = null;
  31.         try {
  32.             evaluator = EvaluatorBuilder.build(type);
  33.             System.out.println("Applicant");
  34.             System.out.println(applicant);
  35.             System.out.println("Evaluation type: " + type.name());
  36.             if (evaluator.evaluate(applicant)) {
  37.                 System.out.println("Applicant is ACCEPTED");
  38.             } else {
  39.                 System.out.println("Applicant is REJECTED");
  40.             }
  41.         } catch (InvalidEvaluation invalidEvaluation) {
  42.             System.out.println("Invalid evaluation");
  43.         }
  44.     }
  45. }
  46.  
  47. class Applicant {
  48.     private String name;
  49.  
  50.     private int creditScore;
  51.     private int employmentYears;
  52.     private boolean hasCriminalRecord;
  53.  
  54.     public Applicant(String name, int creditScore, int employmentYears, boolean hasCriminalRecord) {
  55.         this.name = name;
  56.         this.creditScore = creditScore;
  57.         this.employmentYears = employmentYears;
  58.         this.hasCriminalRecord = hasCriminalRecord;
  59.     }
  60.  
  61.     public String getName() {
  62.         return name;
  63.     }
  64.  
  65.     public int getCreditScore() {
  66.         return creditScore;
  67.     }
  68.  
  69.     public int getEmploymentYears() {
  70.         return employmentYears;
  71.     }
  72.  
  73.     public boolean hasCriminalRecord() {
  74.         return hasCriminalRecord;
  75.     }
  76.  
  77.     @Override
  78.     public String toString() {
  79.         return String.format("Name: %s\nCredit score: %d\nExperience: %d\nCriminal record: %s\n",
  80.                 name, creditScore, employmentYears, hasCriminalRecord ? "Yes" : "No");
  81.     }
  82. }
  83.  
  84. interface Evaluator {
  85.     enum TYPE {
  86.         NO_CRIMINAL_RECORD,
  87.         MORE_EXPERIENCE,
  88.         MORE_CREDIT_SCORE,
  89.         NO_CRIMINAL_RECORD_AND_MORE_EXPERIENCE,
  90.         MORE_EXPERIENCE_AND_MORE_CREDIT_SCORE,
  91.         NO_CRIMINAL_RECORD_AND_MORE_CREDIT_SCORE,
  92.         INVALID // should throw exception
  93.     }
  94.  
  95.     boolean evaluate(Applicant applicant);
  96. }
  97.  
  98. class EvaluatorBuilder {
  99.     public static Evaluator build(Evaluator.TYPE type) throws InvalidEvaluation {
  100.        
  101.        
  102.     }
  103. }
  104.  
  105.  
  106. Решение:
  107.  
  108.  
  109. */
  110. import java.util.Scanner;
  111.  
  112. public class ApplicantEvaluationTest {
  113.     public static void main(String[] args) {
  114.         Scanner scanner = new Scanner(System.in);
  115.         String name = scanner.nextLine();
  116.         int creditScore = scanner.nextInt();
  117.         int employmentYears = scanner.nextInt();
  118.         boolean hasCriminalRecord = scanner.nextBoolean();
  119.         int choice = scanner.nextInt();
  120.         Applicant applicant = new Applicant(name, creditScore, employmentYears, hasCriminalRecord);
  121.         Evaluator.TYPE type = Evaluator.TYPE.values()[choice];
  122.         Evaluator evaluator = null;
  123.         try {
  124.             evaluator = EvaluatorBuilder.build(type);
  125.             System.out.println("Applicant");
  126.             System.out.println(applicant);
  127.             System.out.println("Evaluation type: " + type.name());
  128.             if (evaluator.evaluate(applicant)) {
  129.                 System.out.println("Applicant is ACCEPTED");
  130.             } else {
  131.                 System.out.println("Applicant is REJECTED");
  132.             }
  133.         } catch (InvalidEvaluation invalidEvaluation) {
  134.             System.out.println("Invalid evaluation");
  135.         }
  136.     }
  137. }
  138.  
  139. class Applicant {
  140.     private String name;
  141.  
  142.     private int creditScore;
  143.     private int employmentYears;
  144.     private boolean hasCriminalRecord;
  145.  
  146.     public Applicant(String name, int creditScore, int employmentYears, boolean hasCriminalRecord) {
  147.         this.name = name;
  148.         this.creditScore = creditScore;
  149.         this.employmentYears = employmentYears;
  150.         this.hasCriminalRecord = hasCriminalRecord;
  151.     }
  152.  
  153.     public String getName() {
  154.         return name;
  155.     }
  156.  
  157.     public int getCreditScore() {
  158.         return creditScore;
  159.     }
  160.  
  161.     public int getEmploymentYears() {
  162.         return employmentYears;
  163.     }
  164.  
  165.     public boolean hasCriminalRecord() {
  166.         return hasCriminalRecord;
  167.     }
  168.  
  169.     @Override
  170.     public String toString() {
  171.         return String.format("Name: %s\nCredit score: %d\nExperience: %d\nCriminal record: %s\n", name, creditScore,
  172.                 employmentYears, hasCriminalRecord ? "Yes" : "No");
  173.     }
  174. }
  175.  
  176. interface Evaluator {
  177.     enum TYPE {
  178.         NO_CRIMINAL_RECORD,
  179.         MORE_EXPERIENCE,
  180.         MORE_CREDIT_SCORE,
  181.         NO_CRIMINAL_RECORD_AND_MORE_EXPERIENCE,
  182.         MORE_EXPERIENCE_AND_MORE_CREDIT_SCORE,
  183.         NO_CRIMINAL_RECORD_AND_MORE_CREDIT_SCORE, INVALID // should throw
  184.                                                                                                     // exception
  185.     }
  186.  
  187.     boolean evaluate(Applicant applicant);
  188. }
  189.  
  190. class EvaluatorBuilder {
  191.     public static Evaluator build(Evaluator.TYPE type) throws InvalidEvaluation {
  192.         return new Evaluation(type);
  193.     }
  194.  
  195. }
  196.  
  197. class Evaluation implements Evaluator {
  198.     private Evaluator.TYPE type;
  199.  
  200.     public Evaluation(Evaluator.TYPE type) {
  201.         this.type = type;
  202.     }
  203.  
  204.     public boolean moreExperience(int years) {
  205.         if (years > 10)
  206.             return containsMoreExperience();
  207.         return false;
  208.     }
  209.  
  210.     public boolean moreCreditScore(int score) {
  211.         if (score >= 500)
  212.             return containsMoreScoreCredit();
  213.         return false;
  214.     }
  215.     public boolean noCriminalRecord(boolean hasRecord) {
  216.         if(!hasRecord)
  217.             return containsNoCriminalRecord();
  218.         return false;
  219.     }
  220.  
  221.     public boolean containsNoCriminalRecord() {
  222.         if (type.toString().contains(Evaluator.TYPE.NO_CRIMINAL_RECORD.toString()))
  223.             return true;
  224.         return false;
  225.     }
  226.  
  227.     public boolean containsMoreExperience() {
  228.         if (type.toString().contains(Evaluator.TYPE.MORE_EXPERIENCE.toString()))
  229.             return true;
  230.         return false;
  231.     }
  232.  
  233.     public boolean containsMoreScoreCredit() {
  234.         if (type.toString().contains(Evaluator.TYPE.MORE_CREDIT_SCORE.toString()))
  235.             return true;
  236.         return false;
  237.     }
  238.  
  239.     public boolean evaluate(Applicant a) {
  240.  
  241.         if (moreExperience(a.getEmploymentYears()) && noCriminalRecord(a.hasCriminalRecord())) {
  242.             return true;}
  243.         else if(moreExperience(a.getEmploymentYears()) && moreCreditScore(a.getCreditScore())) {
  244.             return true;}
  245.         else if(noCriminalRecord(a.hasCriminalRecord()) && moreCreditScore(a.getCreditScore())) {
  246.             return true;}
  247.        
  248.         if (containsNoCriminalRecord() && !noCriminalRecord(a.hasCriminalRecord())) {
  249.             return false;
  250.             }
  251.         else if (containsMoreExperience() && !moreExperience(a.getEmploymentYears())) {
  252.             return false;
  253.             }
  254.         else if (containsMoreScoreCredit() && !moreCreditScore(a.getCreditScore())) {
  255.             return false;
  256.         }
  257.         if(type.equals(Evaluator.TYPE.INVALID.toString()))
  258.             return false;
  259.         return true;
  260.  
  261.     }
  262. }
  263.  
  264. class InvalidEvaluation extends Exception {
  265. }
Advertisement
Add Comment
Please, Sign In to add comment