oppgave: named

This commit is contained in:
2026-03-03 05:26:25 +01:00
parent 00f8009e0d
commit 341848f3e8
9 changed files with 115 additions and 23 deletions

View File

@@ -1,25 +1,65 @@
package oving5;
import java.util.function.BinaryOperator;
import java.util.Stack;
import java.util.HashMap;
public class RPNCalc {
private HashMap<Character, BinaryOperator<Double>> ops = new HashMap<Character, BinaryOperator<Double>>();
private Stack<Double> stack = new Stack<>();
RPNCalc() {
}
public void performOperation(char c) {
boolean addOperator(char op, BinaryOperator<Double> f) {
if (ops.containsKey(op) || f == null) {
return false;
}
ops.put(op, f);
return true;
}
public void removeOperator(char c) {
void push(double n) {
stack.push(n);
}
public boolean addOperator(char c, BinaryOperator<Double> d) {
return false;
double pop() {
if (stack.isEmpty()) {
return Double.NaN;
}
return stack.pop();
}
public Double pop() {
return 0.0;
double peek(int i) {
int id = stack.size() - i;
if (id < 0 || id >= stack.size()) {
return Double.NaN;
}
return stack.get(id);
}
public void push(int i) {
int getSize() {
return stack.size();
}
void performOperation(char c) {
BinaryOperator<Double> op = ops.get(c);
if (op == null) {
throw new UnsupportedOperationException("Invalid operator: " + c);
}
if (stack.size() <= 1) {
return;
}
double a = stack.pop();
double b = stack.pop();
stack.push(op.apply(b, a));
}
void removeOperator(char c) {
ops.remove(c);
}
}

View File

@@ -0,0 +1,10 @@
package oving5.named;
public interface Named {
String getFullName();
String getFamilyName();
String getGivenName();
void setGivenName(String name);
void setFamilyName(String name);
void setFullName(String name);
}

View File

@@ -0,0 +1,14 @@
package oving5.named;
import java.util.Comparator;
public class NamedComparator implements Comparator<Named> {
@Override
public int compare(Named named1, Named named2) {
int a = named1.getFamilyName().compareTo(named2.getFamilyName());
if (a == 0) {
return named1.getGivenName().compareTo(named2.getGivenName());
}
return a;
}
}

View File

@@ -1,28 +1,43 @@
package oving5.named;
public class Person1 {
Person1(String s) {
public class Person1 implements Named {
private String givenName;
private String familyName;
private String fullName;
Person1(String givenName, String familyName) {
setFullName(givenName + " " + familyName);
setGivenName(givenName);
setFamilyName(familyName);
}
public void setFullName(String s) {
public void setFullName(String fullName) {
this.fullName = fullName;
String[] l = fullName.split(" ");
givenName = (l[0]);
familyName = (l[1]);
}
public void setFamilyName(String s) {
public void setFamilyName(String familyName) {
this.familyName = familyName;
setFullName(givenName + " " + familyName);
}
public void setGivenName(String s) {
public void setGivenName(String givenName) {
this.givenName = givenName;
setFullName(givenName + " " + familyName);
}
public String getFullName() {
return "";
return fullName;
}
public String getFamilyName() {
return "";
return familyName;
}
public String getGivenName() {
return "";
return givenName;
}
}

View File

@@ -1,28 +1,41 @@
package oving5.named;
public class Person2 {
Person2(String s) {
public class Person2 implements Named {
private String fullName;
private String familyName;
private String givenName;
Person2(String fullName) {
setFullName(fullName);
}
public void setFullName(String s) {
public void setFullName(String fullName) {
this.fullName = fullName;
String[] l = fullName.split(" ");
givenName = l[0];
familyName = l[1];
}
public void setFamilyName(String s) {
public void setFamilyName(String familyName) {
this.familyName = familyName;
fullName = givenName + " " + familyName;
}
public void setGivenName(String s) {
public void setGivenName(String givenName) {
this.givenName = givenName;
fullName = givenName + " " + familyName;
}
public String getFullName() {
return "";
return fullName;
}
public String getFamilyName() {
return "";
return familyName;
}
public String getGivenName() {
return "";
return givenName;
}
}