From a2c6009b70c9847e45776a88359f67b0517c2b87 Mon Sep 17 00:00:00 2001 From: TiagoRG <35657250+TiagoRG@users.noreply.github.com> Date: Tue, 21 Mar 2023 09:54:14 +0000 Subject: [PATCH 1/9] [POO] aula05 DateYMD update --- 1ano/2semestre/poo/src/aula05/DateYMD.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1ano/2semestre/poo/src/aula05/DateYMD.java b/1ano/2semestre/poo/src/aula05/DateYMD.java index 13c7f84..74392d0 100644 --- a/1ano/2semestre/poo/src/aula05/DateYMD.java +++ b/1ano/2semestre/poo/src/aula05/DateYMD.java @@ -71,7 +71,7 @@ public class DateYMD { } public String toString() { - return String.format("%04d-%02d-%02d", year, month, day); + return String.format("%04d-%02d-%02d", this.year, this.month, this.day); } static boolean validMonth(int month) { return month >= 1 && month <= 12; From 83bf361d2a480ee93b6e7d7bff22a190638a13b6 Mon Sep 17 00:00:00 2001 From: TiagoRG <35657250+TiagoRG@users.noreply.github.com> Date: Tue, 21 Mar 2023 09:58:15 +0000 Subject: [PATCH 2/9] [POO] added DateYMD to utils --- 1ano/2semestre/poo/src/utils/DateYMD.java | 94 +++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 1ano/2semestre/poo/src/utils/DateYMD.java diff --git a/1ano/2semestre/poo/src/utils/DateYMD.java b/1ano/2semestre/poo/src/utils/DateYMD.java new file mode 100644 index 0000000..65bb60f --- /dev/null +++ b/1ano/2semestre/poo/src/utils/DateYMD.java @@ -0,0 +1,94 @@ +package utils; + +public class DateYMD { + private int day; + private int month; + private int year; + + public DateYMD(int day, int month, int year) { + if (!validDate(day, month, year)) + throw new IllegalArgumentException("Invalid date"); + this.day = day; + this.month = month; + this.year = year; + } + + public void set(int day, int month, int year) { + if (!validDate(day, month, year)) + throw new IllegalArgumentException("Invalid date"); + this.day = day; + this.month = month; + this.year = year; + } + + public int[] get() { + return new int[]{this.day, this.month, this.year}; + } + + public int getDay() { + return day; + } + + public int getMonth() { + return month; + } + + public int getYear() { + return year; + } + + public void increment() { + if (this.day < monthDays(this.month, this.year)) + this.day++; + else if (this.month < 12) { + this.day = 1; + this.month++; + } else { + this.day = 1; + this.month = 1; + this.year++; + } + } + + public void addDays(int days) { + for (int i = 0; i < days; i++) + this.increment(); + } + + public void decrement() { + if (this.day > 1) + this.day--; + else if (this.month > 1) { + this.day = monthDays(this.month - 1, this.year); + this.month--; + } else { + this.day = 31; + this.month = 12; + this.year--; + } + } + + public String toString() { + return String.format("%04d-%02d-%02d", this.year, this.month, this.day); + } + static boolean validMonth(int month) { + return month >= 1 && month <= 12; + } + + static int monthDays(int month, int year) { + if (!validMonth(month)) + return -1; + int[] daysPerMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; + if (month == 2 && isLeapYear(year)) + return 29; + return daysPerMonth[month - 1]; + } + + static boolean isLeapYear(int year) { + return year % 100 == 0 ? year % 400 == 0 : year % 4 == 0; + } + + static boolean validDate(int day, int month, int year) { + return day >= 1 && day <= monthDays(month, year); + } +} \ No newline at end of file From e6ee64272f5b0fd3507f30a27d11ee5a5bb6b811 Mon Sep 17 00:00:00 2001 From: TiagoRG <35657250+TiagoRG@users.noreply.github.com> Date: Tue, 21 Mar 2023 10:13:22 +0000 Subject: [PATCH 3/9] [POO] aula06 ex1 added --- 1ano/2semestre/poo/src/aula06/Bolser.java | 43 +++++++++++++++++ 1ano/2semestre/poo/src/aula06/Person.java | 47 +++++++++++++++++++ 1ano/2semestre/poo/src/aula06/PersonTest.java | 21 +++++++++ 1ano/2semestre/poo/src/aula06/Professor.java | 39 +++++++++++++++ 1ano/2semestre/poo/src/aula06/Student.java | 40 ++++++++++++++++ 5 files changed, 190 insertions(+) create mode 100644 1ano/2semestre/poo/src/aula06/Bolser.java create mode 100644 1ano/2semestre/poo/src/aula06/Person.java create mode 100644 1ano/2semestre/poo/src/aula06/PersonTest.java create mode 100644 1ano/2semestre/poo/src/aula06/Professor.java create mode 100644 1ano/2semestre/poo/src/aula06/Student.java diff --git a/1ano/2semestre/poo/src/aula06/Bolser.java b/1ano/2semestre/poo/src/aula06/Bolser.java new file mode 100644 index 0000000..77a08e4 --- /dev/null +++ b/1ano/2semestre/poo/src/aula06/Bolser.java @@ -0,0 +1,43 @@ +package aula06; + +import utils.DateYMD; + +public class Bolser extends Student{ + private Professor supervisor; + private double monthlyAmount; + + public Bolser(String name, int cc, DateYMD birthDate, DateYMD registrationDate, Professor supervisor, double monthlyAmount) { + super(name, cc, birthDate, registrationDate); + this.setSupervisor(supervisor); + this.setMonthlyAmount(monthlyAmount); + } + + public Bolser(String name, int cc, DateYMD birthDate, Professor supervisor, double monthlyAmount) { + this(name, cc, birthDate, null, supervisor, monthlyAmount); + } + + public Professor getSupervisor() { + return this.supervisor; + } + public void setSupervisor(Professor supervisor) { + if (supervisor == null) { + throw new IllegalArgumentException("Supervisor cannot be null"); + } + this.supervisor = supervisor; + } + + public double getMonthlyAmount() { + return this.monthlyAmount; + } + public void setMonthlyAmount(double monthlyAmount) { + if (monthlyAmount < 0) { + throw new IllegalArgumentException("Monthly amount cannot be negative"); + } + this.monthlyAmount = monthlyAmount; + } + + @Override + public String toString() { + return String.format("%s; CC: %d; Date de nascimento: %s; Data de matrícula: %s; NMec: %d; Supervisor: %s; Montante mensal: %.2f", this.getName(), this.getCc(), this.getBirthDate(), this.getRegistrationDate(), this.getNMec(), this.supervisor, this.monthlyAmount); + } +} diff --git a/1ano/2semestre/poo/src/aula06/Person.java b/1ano/2semestre/poo/src/aula06/Person.java new file mode 100644 index 0000000..6d46a70 --- /dev/null +++ b/1ano/2semestre/poo/src/aula06/Person.java @@ -0,0 +1,47 @@ +package aula06; + +import utils.DateYMD; + +public class Person { + private String name; + private int cc; + private DateYMD birthDate; + + public Person(String name, int cc, DateYMD birthDate) { + this.setName(name); + this.setCc(cc); + this.setBirthDate(birthDate); + } + + public String getName() { + return this.name; + } + public void setName(String name) { + if (name == null || name.isEmpty()) { + throw new IllegalArgumentException("Name cannot be null or empty"); + } + this.name = name; + } + + public int getCc() { + return this.cc; + } + public void setCc(int cc) { + this.cc = cc; + } + + public DateYMD getBirthDate() { + return this.birthDate; + } + public void setBirthDate(DateYMD birthDate) { + if (birthDate == null) { + throw new IllegalArgumentException("Birth date cannot be null"); + } + this.birthDate = birthDate; + } + + @Override + public String toString() { + return String.format("%s; CC: %d; Date de nascimento: %s", this.name, this.cc, this.birthDate); + } +} diff --git a/1ano/2semestre/poo/src/aula06/PersonTest.java b/1ano/2semestre/poo/src/aula06/PersonTest.java new file mode 100644 index 0000000..134b306 --- /dev/null +++ b/1ano/2semestre/poo/src/aula06/PersonTest.java @@ -0,0 +1,21 @@ +package aula06; + +import java.util.Scanner; +import utils.DateYMD; + +public class PersonTest { + public static void main(String[] args) { + Scanner sin = new Scanner(System.in); + + Student al = new Student ("Andreia Melo", 9855678,new DateYMD(18, 7, 1990), new DateYMD(1, 9, 2018)); + Professor p1 = new Professor("Jorge Almeida", 3467225, new DateYMD(13, 3, 1967), "Associado", "Informática"); + Bolser bls = new Bolser ("Igor Santos", 8976543, new DateYMD(11, 5, 1985), p1, 900); + bls.setMonthlyAmount(1050); + System.out.println("Student:"+ al.getName()); + System.out.println(al); + System.out.println("Bolser:"+ bls.getName() + ", NMec: " + bls.getNMec() + ", Bolsa:" + bls.getMonthlyAmount()+ ", Orientador:" + bls.getSupervisor()); + System.out.println(bls); + + sin.close(); + } +} diff --git a/1ano/2semestre/poo/src/aula06/Professor.java b/1ano/2semestre/poo/src/aula06/Professor.java new file mode 100644 index 0000000..55dd541 --- /dev/null +++ b/1ano/2semestre/poo/src/aula06/Professor.java @@ -0,0 +1,39 @@ +package aula06; + +import utils.DateYMD; + +public class Professor extends Person { + private String category; + private String department; + + public Professor(String name, int cc, DateYMD birthDate, String category, String department) { + super(name, cc, birthDate); + this.setCategory(category); + this.setDepartment(department); + } + + public String getCategory() { + return this.category; + } + public void setCategory(String category) { + if (category == null || category.isEmpty()) { + throw new IllegalArgumentException("Category cannot be null or empty"); + } + this.category = category; + } + + public String getDepartment() { + return this.department; + } + public void setDepartment(String department) { + if (department == null || department.isEmpty()) { + throw new IllegalArgumentException("Department cannot be null or empty"); + } + this.department = department; + } + + @Override + public String toString() { + return String.format("%s; CC: %d; Date de nascimento: %s; Categoria: %s; Departamento: %s", this.getName(), this.getCc(), this.getBirthDate(), this.category, this.department); + } +} diff --git a/1ano/2semestre/poo/src/aula06/Student.java b/1ano/2semestre/poo/src/aula06/Student.java new file mode 100644 index 0000000..458d990 --- /dev/null +++ b/1ano/2semestre/poo/src/aula06/Student.java @@ -0,0 +1,40 @@ +package aula06; + +import utils.DateYMD; +import java.time.LocalDate; + +public class Student extends Person { + private DateYMD registrationDate; + private int nMec; + public static int currentNMec = 100; + + public Student(String name, int cc, DateYMD birthDate, DateYMD registrationDate) { + super(name, cc, birthDate); + this.setRegistrationDate(registrationDate); + this.setNMec(Student.currentNMec++); + } + + public Student(String name, int age, DateYMD birthDate) { + this(name, age, birthDate, null); + } + + public int getNMec() { + return this.nMec; + } + public void setNMec(int nMec) { + this.nMec = nMec; + } + + public DateYMD getRegistrationDate() { + return this.registrationDate; + } + public void setRegistrationDate(DateYMD registrationDate) { + LocalDate now = LocalDate.now(); + this.registrationDate = registrationDate == null ? new DateYMD(now.getDayOfMonth(), now.getMonthValue(), now.getYear()) : registrationDate; + } + + @Override + public String toString() { + return String.format("%s; CC: %d; Date de nascimento: %s; Data de matrícula: %s; NMec: %d", this.getName(), this.getCc(), this.getBirthDate(), this.registrationDate, this.nMec); + } +} From 98ff46a5dbb7484805314ab158a8a764bde4eca9 Mon Sep 17 00:00:00 2001 From: TiagoRG <35657250+TiagoRG@users.noreply.github.com> Date: Tue, 21 Mar 2023 10:13:41 +0000 Subject: [PATCH 4/9] [POO] aula06 guide added --- 1ano/2semestre/poo/guides/POO-2022-aula06.pdf | Bin 0 -> 122511 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 1ano/2semestre/poo/guides/POO-2022-aula06.pdf diff --git a/1ano/2semestre/poo/guides/POO-2022-aula06.pdf b/1ano/2semestre/poo/guides/POO-2022-aula06.pdf new file mode 100644 index 0000000000000000000000000000000000000000..10d65a55a15351be2ec574cfac3ea35c9af2fa01 GIT binary patch literal 122511 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 z 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
koI@+e0qL>&MkKS{o~Abc*H%GBg`xWU6FZRaHzi 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 Date: Tue, 21 Mar 2023 13:13:25 +0000 Subject: [PATCH 5/9] [POO] created validations --- 1ano/2semestre/poo/src/aula06/Person.java | 10 ++++++---- 1ano/2semestre/poo/src/aula06/Professor.java | 10 ++++++---- 1ano/2semestre/poo/src/utils/DateYMD.java | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/1ano/2semestre/poo/src/aula06/Person.java b/1ano/2semestre/poo/src/aula06/Person.java index 6d46a70..09e10a0 100644 --- a/1ano/2semestre/poo/src/aula06/Person.java +++ b/1ano/2semestre/poo/src/aula06/Person.java @@ -17,9 +17,10 @@ public class Person { return this.name; } public void setName(String name) { - if (name == null || name.isEmpty()) { + if (name == null || name.isEmpty()) throw new IllegalArgumentException("Name cannot be null or empty"); - } + if (!name.matches("^[a-zA-Z ]+$")) + throw new IllegalArgumentException("Name must only contain letters and spaces"); this.name = name; } @@ -27,6 +28,8 @@ public class Person { return this.cc; } public void setCc(int cc) { + if (String.valueOf(cc).length() != 8) + throw new IllegalArgumentException("CC must have 8 digits"); this.cc = cc; } @@ -34,9 +37,8 @@ public class Person { return this.birthDate; } public void setBirthDate(DateYMD birthDate) { - if (birthDate == null) { + if (birthDate == null) throw new IllegalArgumentException("Birth date cannot be null"); - } this.birthDate = birthDate; } diff --git a/1ano/2semestre/poo/src/aula06/Professor.java b/1ano/2semestre/poo/src/aula06/Professor.java index 55dd541..1dd9a16 100644 --- a/1ano/2semestre/poo/src/aula06/Professor.java +++ b/1ano/2semestre/poo/src/aula06/Professor.java @@ -16,9 +16,10 @@ public class Professor extends Person { return this.category; } public void setCategory(String category) { - if (category == null || category.isEmpty()) { + if (category == null || category.isEmpty()) throw new IllegalArgumentException("Category cannot be null or empty"); - } + if (!(category.equals("Auxiliar") || category.equals("Associado") || category.equals("Catedrático"))) + throw new IllegalArgumentException("Invalid category"); this.category = category; } @@ -26,9 +27,10 @@ public class Professor extends Person { return this.department; } public void setDepartment(String department) { - if (department == null || department.isEmpty()) { + if (department == null || department.isEmpty()) throw new IllegalArgumentException("Department cannot be null or empty"); - } + if (!department.matches("^[a-zA-Z ]+$")) + throw new IllegalArgumentException("Invalid department"); this.department = department; } diff --git a/1ano/2semestre/poo/src/utils/DateYMD.java b/1ano/2semestre/poo/src/utils/DateYMD.java index 65bb60f..b4723c4 100644 --- a/1ano/2semestre/poo/src/utils/DateYMD.java +++ b/1ano/2semestre/poo/src/utils/DateYMD.java @@ -88,7 +88,7 @@ public class DateYMD { return year % 100 == 0 ? year % 400 == 0 : year % 4 == 0; } - static boolean validDate(int day, int month, int year) { + public static boolean validDate(int day, int month, int year) { return day >= 1 && day <= monthDays(month, year); } } \ No newline at end of file From 38c3b0eac31ed38a4ab6d136f926ab47acbb55ac Mon Sep 17 00:00:00 2001 From: TiagoRG <35657250+TiagoRG@users.noreply.github.com> Date: Tue, 21 Mar 2023 18:46:03 +0000 Subject: [PATCH 6/9] [POO] aula06 ex2 added --- 1ano/2semestre/poo/src/aula06/Contact.java | 55 ++++++ .../2semestre/poo/src/aula06/ContactList.java | 177 ++++++++++++++++++ 1ano/2semestre/poo/src/aula06/Person.java | 2 +- 3 files changed, 233 insertions(+), 1 deletion(-) create mode 100644 1ano/2semestre/poo/src/aula06/Contact.java create mode 100644 1ano/2semestre/poo/src/aula06/ContactList.java diff --git a/1ano/2semestre/poo/src/aula06/Contact.java b/1ano/2semestre/poo/src/aula06/Contact.java new file mode 100644 index 0000000..73a711c --- /dev/null +++ b/1ano/2semestre/poo/src/aula06/Contact.java @@ -0,0 +1,55 @@ +package aula06; + +public class Contact { + private final int id; + private Person person; + private String email; + private String phone; + + private static int currentId = 1; + + public Contact(Person person, String email, String phone) { + if (email == null || email.isEmpty() || phone == null || phone.isEmpty()) + throw new IllegalArgumentException("Either email or phone must be provided"); + this.id = Contact.currentId++; + this.setPerson(person); + this.setEmail(email); + this.setPhone(phone); + } + + public int getId() { + return id; + } + + public Person getPerson() { + return person; + } + public void setPerson(Person person) { + if (person == null) + throw new IllegalArgumentException("Person must be provided"); + this.person = person; + } + + public String getEmail() { + return email; + } + public void setEmail(String email) { + if (!email.matches("^[a-zA-Z_0-9.]+@[a-zA-Z_0-9.]+\\.[a-zA-Z_0-9]+$")) + throw new IllegalArgumentException("Invalid email"); + this.email = email; + } + + public String getPhone() { + return phone; + } + public void setPhone(String phone) { + if (!phone.matches("^9[0-9]{8}$")) + throw new IllegalArgumentException("Invalid phone"); + this.phone = phone; + } + + @Override + public String toString() { + return String.format("ID: %d%nPerson: %s%nEmail: %s%nPhone: %s", this.id, this.person, this.email, this.phone); + } +} diff --git a/1ano/2semestre/poo/src/aula06/ContactList.java b/1ano/2semestre/poo/src/aula06/ContactList.java new file mode 100644 index 0000000..13f5ebb --- /dev/null +++ b/1ano/2semestre/poo/src/aula06/ContactList.java @@ -0,0 +1,177 @@ +package aula06; + +import utils.DateYMD; + +import java.util.Scanner; + +public class ContactList { + private static final Scanner sin = new Scanner(System.in); + private static Contact[] contacts; + + public static void main(String[] args) { + + while (true) { + System.out.println("Selecione uma opção:"); + System.out.println("1. Inserir contacto"); + System.out.println("2. Alterar contacto"); + System.out.println("3. Apagar contacto"); + System.out.println("4. Procurar contacto"); + System.out.println("5. Listar contactos"); + System.out.println("0. Sair"); + System.out.print("> "); + String option = sin.nextLine(); + switch (option) { + case "0" -> { + sin.close(); + System.exit(0); + } + case "1" -> { + System.out.print("Insira o nome: "); + String name = sin.nextLine(); + System.out.print("Insira o cc: "); + String ccStr = sin.nextLine(); + int cc = Integer.parseInt(ccStr); + System.out.print("Insira a data de nascimento (formado: dd-mm-yyyy): "); + String date = sin.nextLine(); + String[] dateParts = date.split("-"); + DateYMD birthDate = new DateYMD(Integer.parseInt(dateParts[0]), Integer.parseInt(dateParts[1]), Integer.parseInt(dateParts[2])); + System.out.print("Insira o email: "); + String email = sin.nextLine(); + System.out.print("Insira o telefone: "); + String phone = sin.nextLine(); + Person person = new Person(name, cc, birthDate); + + Contact contact = new Contact(person, email, phone); + + if (contacts == null) { + contacts = new Contact[1]; + contacts[0] = contact; + } else { + if (checkIfContactExists(cc)) break; + Contact[] newContacts = new Contact[contacts.length + 1]; + System.arraycopy(contacts, 0, newContacts, 0, contacts.length); + newContacts[contacts.length] = contact; + contacts = newContacts; + } + } + case "2" -> { + System.out.print("Insira o nome, email ou telefone do contacto que pretende alterar: "); + String query = sin.nextLine(); + int[] indexes = searchContactsIndex(query); + System.out.printf("Contactos encontrados: %d%n", indexes.length); + + if (indexes.length == 0) { + System.out.println("Não foram encontrados contactos com esse nome, email ou telefone"); + } else if (indexes.length == 1) { + System.out.printf("Alterando contacto: %s%n", contacts[indexes[0]]); + System.out.print("Insira o novo telefone: "); + String phone = sin.nextLine(); + System.out.print("Insira o novo email: "); + String email = sin.nextLine(); + contacts[indexes[0]].setPhone(phone); + contacts[indexes[0]].setEmail(email); + } else { + Contact contact = selectContact(indexes); + System.out.printf("Alterando contacto: %s%n", contact); + System.out.print("Insira o novo telefone: "); + String phone = sin.nextLine(); + System.out.print("Insira o novo email: "); + String email = sin.nextLine(); + contact.setPhone(phone); + contact.setEmail(email); + } + } + case "3" -> { + System.out.print("Insira o nome, email ou telefone do contacto que pretende alterar: "); + String query = sin.nextLine(); + int[] indexes = searchContactsIndex(query); + System.out.printf("Contactos encontrados: %d%n", indexes.length); + + if (indexes.length == 0) { + System.out.println("Não foram encontrados contactos com esse nome, email ou telefone"); + } else if (indexes.length == 1) { + System.out.printf("Apagando contacto: %s%n", contacts[indexes[0]]); + Contact[] newContacts = new Contact[contacts.length - 1]; + System.arraycopy(contacts, 0, newContacts, 0, indexes[0]); + System.arraycopy(contacts, indexes[0] + 1, newContacts, indexes[0], contacts.length - indexes[0] - 1); + contacts = newContacts; + } else { + Contact contact = selectContact(indexes); + System.out.printf("Apagando contacto: %s%n", contact); + Contact[] newContacts = new Contact[contacts.length - 1]; + System.arraycopy(contacts, 0, newContacts, 0, contact.getId()); + System.arraycopy(contacts, contact.getId() + 1, newContacts, contact.getId(), contacts.length - contact.getId() - 1); + contacts = newContacts; + } + } + case "4" -> { + System.out.print("Insira o nome, email ou telefone do contacto que pretende alterar: "); + String query = sin.nextLine(); + int[] indexes = searchContactsIndex(query); + System.out.printf("Contactos encontrados: %d%n", indexes.length); + + if (indexes.length == 0) { + System.out.println("Não foram encontrados contactos com esse nome, email ou telefone"); + } else if (indexes.length == 1) { + System.out.println(contacts[indexes[0]]); + } else { + for (int index : indexes) + System.out.printf("%s%n", contacts[index]); + } + System.out.println(); + } + case "5" -> { + for (Contact contact : contacts) + System.out.printf("%s%n", contact); + System.out.println(); + } + default -> System.out.println("Opção inválida!"); + } + } + } + + private static boolean checkIfContactExists(int cc) { + for (Contact c : contacts) { + if (c.getPerson().getCc() == cc) { + System.out.print("Já existe um contacto para essa pessoa, pretende criar um novo? (s/n): "); + String answer = sin.nextLine(); + return answer.equals("s"); + } + } + return true; + } + + private static int[] searchContactsIndex(String query) { + int[] indexes = new int[contacts.length]; + int index = 0; + for (int i = 0; i < contacts.length; i++) { + if (contacts[i].getPerson().getName().contains(query) || contacts[i].getEmail().contains(query) || contacts[i].getPhone().contains(query)) { + indexes[index] = i; + index++; + } + } + return indexes; + } + + private static Contact selectContact(int[] indexes) { + System.out.println("Foram encontrados vários contactos com esse nome, email ou telefone, selecione um:"); + for (int index : indexes) + System.out.printf("%s%n", contacts[index]); + + Contact contact; + do { + System.out.print("Insira o ID do contacto que pretende alterar: "); + int index = sin.nextInt(); + contact = searchContactById(index); + } while (contact == null); + + return contact; + } + + private static Contact searchContactById(int id) { + for (Contact contact : contacts) { + if (contact.getId() == id) return contact; + } + return null; + } +} diff --git a/1ano/2semestre/poo/src/aula06/Person.java b/1ano/2semestre/poo/src/aula06/Person.java index 09e10a0..a259876 100644 --- a/1ano/2semestre/poo/src/aula06/Person.java +++ b/1ano/2semestre/poo/src/aula06/Person.java @@ -44,6 +44,6 @@ public class Person { @Override public String toString() { - return String.format("%s; CC: %d; Date de nascimento: %s", this.name, this.cc, this.birthDate); + return String.format("%s; CC: %d; Data de nascimento: %s", this.name, this.cc, this.birthDate); } } From 8fb06df88aaf67636504c25af01afbc7d38a8a01 Mon Sep 17 00:00:00 2001 From: TiagoRG <35657250+TiagoRG@users.noreply.github.com> Date: Tue, 21 Mar 2023 19:00:48 +0000 Subject: [PATCH 7/9] [POO] removed regex for names --- 1ano/2semestre/poo/src/aula06/Person.java | 2 -- 1ano/2semestre/poo/src/aula06/PersonTest.java | 6 +++--- 1ano/2semestre/poo/src/aula06/Professor.java | 2 -- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/1ano/2semestre/poo/src/aula06/Person.java b/1ano/2semestre/poo/src/aula06/Person.java index a259876..4744bad 100644 --- a/1ano/2semestre/poo/src/aula06/Person.java +++ b/1ano/2semestre/poo/src/aula06/Person.java @@ -19,8 +19,6 @@ public class Person { public void setName(String name) { if (name == null || name.isEmpty()) throw new IllegalArgumentException("Name cannot be null or empty"); - if (!name.matches("^[a-zA-Z ]+$")) - throw new IllegalArgumentException("Name must only contain letters and spaces"); this.name = name; } diff --git a/1ano/2semestre/poo/src/aula06/PersonTest.java b/1ano/2semestre/poo/src/aula06/PersonTest.java index 134b306..423cf59 100644 --- a/1ano/2semestre/poo/src/aula06/PersonTest.java +++ b/1ano/2semestre/poo/src/aula06/PersonTest.java @@ -7,9 +7,9 @@ public class PersonTest { public static void main(String[] args) { Scanner sin = new Scanner(System.in); - Student al = new Student ("Andreia Melo", 9855678,new DateYMD(18, 7, 1990), new DateYMD(1, 9, 2018)); - Professor p1 = new Professor("Jorge Almeida", 3467225, new DateYMD(13, 3, 1967), "Associado", "Informática"); - Bolser bls = new Bolser ("Igor Santos", 8976543, new DateYMD(11, 5, 1985), p1, 900); + Student al = new Student ("Andreia Melo", 98556781,new DateYMD(18, 7, 1990), new DateYMD(1, 9, 2018)); + Professor p1 = new Professor("Jorge Almeida", 34672215, new DateYMD(13, 3, 1967), "Associado", "Informática"); + Bolser bls = new Bolser ("Igor Santos", 89765431, new DateYMD(11, 5, 1985), p1, 900); bls.setMonthlyAmount(1050); System.out.println("Student:"+ al.getName()); System.out.println(al); diff --git a/1ano/2semestre/poo/src/aula06/Professor.java b/1ano/2semestre/poo/src/aula06/Professor.java index 1dd9a16..00e59c1 100644 --- a/1ano/2semestre/poo/src/aula06/Professor.java +++ b/1ano/2semestre/poo/src/aula06/Professor.java @@ -29,8 +29,6 @@ public class Professor extends Person { public void setDepartment(String department) { if (department == null || department.isEmpty()) throw new IllegalArgumentException("Department cannot be null or empty"); - if (!department.matches("^[a-zA-Z ]+$")) - throw new IllegalArgumentException("Invalid department"); this.department = department; } From 4d0436ce7918b43a6b6a454c4aeabe2fa30eb664 Mon Sep 17 00:00:00 2001 From: TiagoRG <35657250+TiagoRG@users.noreply.github.com> Date: Tue, 21 Mar 2023 22:27:35 +0000 Subject: [PATCH 8/9] [POO] README update --- 1ano/2semestre/poo/src/aula05/README.md | 10 ++++++---- 1ano/2semestre/poo/src/aula06/README.md | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) create mode 100755 1ano/2semestre/poo/src/aula06/README.md diff --git a/1ano/2semestre/poo/src/aula05/README.md b/1ano/2semestre/poo/src/aula05/README.md index ad99067..ef70d71 100755 --- a/1ano/2semestre/poo/src/aula05/README.md +++ b/1ano/2semestre/poo/src/aula05/README.md @@ -1,14 +1,16 @@ # Programação Orientada a Objetos ## Aula 05 -### Tópico principal da aula: Inheritance +### Tópico principal da aula: Classes * [Guião](https://github.com/TiagoRG/uaveiro-leci/tree/master/1ano/2semestre/poo/guides/POO-2022-aula05.pdf) * [Slides](https://github.com/TiagoRG/uaveiro-leci/tree/master/1ano/2semestre/poo/slides/POO_03_Classes.pdf) ### Exercise List -| Exercise Number | File Name | -|-----------------|----------------------------------------------------------------------------------------------------------------| -| 1 | [DateYMD.java](https://github.com/TiagoRG/uaveiro-leci/blob/master/1ano/2semestre/poo/src/aula05/DateYMD.java) | +| Exercise Number | File Name | +|-----------------|------------------------------------------------------------------------------------------------------------------------| +| 1 | [DateYMD.java](https://github.com/TiagoRG/uaveiro-leci/blob/master/1ano/2semestre/poo/src/aula05/DateYMD.java) | +| 2 | [Calendar.java](https://github.com/TiagoRG/uaveiro-leci/blob/master/1ano/2semestre/poo/src/aula05/Calendar.java) | +| 3 | [AuctionDemo.java](https://github.com/TiagoRG/uaveiro-leci/blob/master/1ano/2semestre/poo/src/aula05/AuctionDemo.java) | --- *Pode conter erros, caso encontre algum, crie um* [*ticket*](https://github.com/TiagoRG/uaveiro-leci/issues/new) diff --git a/1ano/2semestre/poo/src/aula06/README.md b/1ano/2semestre/poo/src/aula06/README.md new file mode 100755 index 0000000..f295632 --- /dev/null +++ b/1ano/2semestre/poo/src/aula06/README.md @@ -0,0 +1,16 @@ +# Programação Orientada a Objetos +## Aula 06 +### Tópico principal da aula: Inheritance + +* [Guião](https://github.com/TiagoRG/uaveiro-leci/tree/master/1ano/2semestre/poo/guides/POO-2022-aula06.pdf) +* [Slides](https://github.com/TiagoRG/uaveiro-leci/tree/master/1ano/2semestre/poo/slides/POO_04_Herança.pdf) + +### Exercise List +| Exercise Number | Files Name | +|-----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 1 | [PersonTest.java](https://github.com/TiagoRG/uaveiro-leci/blob/master/1ano/2semestre/poo/src/aula06/PersonTest.java)
[Person.java](https://github.com/TiagoRG/uaveiro-leci/blob/master/1ano/2semestre/poo/src/aula06/Person.java)
[Student.java](https://github.com/TiagoRG/uaveiro-leci/blob/master/1ano/2semestre/poo/src/aula06/Student.java)
[Professor.java](https://github.com/TiagoRG/uaveiro-leci/blob/master/1ano/2semestre/poo/src/aula06/Professor.java)
[Bolser.java](https://github.com/TiagoRG/uaveiro-leci/blob/master/1ano/2semestre/poo/src/aula06/Bolser.java) | +| 2 | [Contact.java](https://github.com/TiagoRG/uaveiro-leci/blob/master/1ano/2semestre/poo/src/aula06/Contact.java)
[ContactList.java](https://github.com/TiagoRG/uaveiro-leci/blob/master/1ano/2semestre/poo/src/aula06/ContactList.java) | +| 3 | [Vector.java](https://github.com/TiagoRG/uaveiro-leci/blob/master/1ano/2semestre/poo/src/aula06/Vector.java)
[VectorTest.java](https://github.com/TiagoRG/uaveiro-leci/blob/master/1ano/2semestre/poo/src/aula06/VectorTest.java) | + +--- +*Pode conter erros, caso encontre algum, crie um* [*ticket*](https://github.com/TiagoRG/uaveiro-leci/issues/new) From b813a943cf87ae120d28b25c476f6e9e66006487 Mon Sep 17 00:00:00 2001 From: TiagoRG <35657250+TiagoRG@users.noreply.github.com> Date: Tue, 21 Mar 2023 22:28:05 +0000 Subject: [PATCH 9/9] [POO] aula06 ex3 added --- 1ano/2semestre/poo/src/aula06/Vector.java | 95 +++++++++++++++++++ 1ano/2semestre/poo/src/aula06/VectorTest.java | 31 ++++++ 2 files changed, 126 insertions(+) create mode 100644 1ano/2semestre/poo/src/aula06/Vector.java create mode 100644 1ano/2semestre/poo/src/aula06/VectorTest.java diff --git a/1ano/2semestre/poo/src/aula06/Vector.java b/1ano/2semestre/poo/src/aula06/Vector.java new file mode 100644 index 0000000..7e151dd --- /dev/null +++ b/1ano/2semestre/poo/src/aula06/Vector.java @@ -0,0 +1,95 @@ +package aula06; + +public class Vector { + private int[] vector; + + // Constructors and main getter + public Vector() { + this.vector = new int[0]; + } + public Vector(int size) { + this.vector = new int[size]; + } + public Vector(int[] vector) { + this.vector = vector; + } + public int[] getVector() { + return vector; + } + + // Getters + public int size() { + return this.vector.length; + } + public boolean contains(int value) { + for (int n : this.vector) + if (n == value) + return true; + return false; + } + public int count(int value) { + int count = 0; + for (int n : this.vector) + if (n == value) + count++; + return count; + } + + // Method to change values + public void insert(int value) { + if (this.contains(value)) return; + int[] aux = new int[this.size()+1]; + System.arraycopy(this.vector, 0, aux, 0, this.size()); + aux[this.size()] = value; + this.vector = aux; + } + public void remove(int value) { + int[] aux = new int[this.size()-this.count(value)]; + int i = 0; + for (int n : this.vector) { + if (n == value) + continue; + aux[i] = n; + i++; + } + this.vector = aux; + } + public void empty() { + this.vector = new int[0]; + } + + // Interact with other vectors + public Vector add(Vector secondVector) { + Vector result = new Vector(); + for (int n : this.vector) + if (!result.contains(n)) + result.insert(n); + for (int n : secondVector.vector) + if (!result.contains(n)) + result.insert(n); + return result; + } + public Vector subtract(Vector secondVector) { + Vector result = new Vector(); + for (int n : this.vector) + if (!result.contains(n) && !secondVector.contains(n)) + result.insert(n); + return result; + } + public Vector intersect(Vector secondVector) { + Vector result = new Vector(); + for (int n : this.vector) + if (!result.contains(n) && secondVector.contains(n)) + result.insert(n); + return result; + } + + // ToString + @Override + public String toString() { + StringBuilder result = new StringBuilder(); + for (int n : this.vector) + result.append(String.format("%d ", n)); + return this.size() > 0 ? result.substring(0, result.length()-1) : result.toString(); + } +} diff --git a/1ano/2semestre/poo/src/aula06/VectorTest.java b/1ano/2semestre/poo/src/aula06/VectorTest.java new file mode 100644 index 0000000..1259028 --- /dev/null +++ b/1ano/2semestre/poo/src/aula06/VectorTest.java @@ -0,0 +1,31 @@ +package aula06; + + +public class VectorTest { + public static void main(String[] args) { + Vector c1 = new Vector(); + c1.insert(4); c1.insert(7); c1.insert(6); c1.insert(5); + + Vector c2 = new Vector(); + int[] test = { 7, 3, 2, 5, 4, 6, 7}; + for (int el : test) c2.insert(el); + c2.remove(3); c2.remove(5); c2.remove(6); + + System.out.println(c1); + System.out.println(c2); + + System.out.println("Número de elementos em c1: " + c1.size()); + System.out.println("Número de elementos em c2: " + c2.size()); + + System.out.println("c1 contém 6?: " + ((c1.contains(6) ? "sim" : "não"))); + System.out.println("c2 contém 6?: " + ((c2.contains(6) ? "sim" : "não"))); + + System.out.println("União:" + c1.add(c2)); + System.out.println("Interseção:" + c1.intersect(c2)); + System.out.println("Diferença:" + c1.subtract(c2)); + + c1.empty(); + System.out.println("c1:" + c1); + + } +}