# Programmering 2: Uppgiftsblad klasser
### Uppgift 1: Student
Skapa en Java-klass som heter Student och representerar en elevs information. Klassen bör ha följande metoder:
`calculateGrade(double points)`: Denna metod bör ta en numerisk poäng som inmatning och returnera det motsvarande betyget (t.ex. A, B, C, D eller F) baserat på en betygsskala efter eget val.
`isPassing(double points)`: Denna metod bör ta en numerisk poäng som inmatning och returnera en boolean som indikerar om studenten är godkänd (inte fått betyget F).
Skapa några Student-objekt, beräkna deras betyg och kontrollera om de är godkända.
### Uppgift 2: StringUtil
Skapa en Java-klass som heter `StringUtil` och innehåller metoder för stränghantering. Klassen bör ha följande metoder:
`countVowels(String text)`: Denna metod bör ta en sträng som inmatning och returnera antalet vokaler i strängen.
`reverseString(String text)`: Denna metod bör ta en sträng som inmatning och returnera dess omvända form.
*Tips: använda metoden `.charAt(index)` för att få bokstaven på plats `index`*
Skapa ett StringUtil-objekt i en main-metod (i en annan fil) och testa metoderna genom att anropa dem.
### Uppgift 3
Skapa en Java-klass som heter BankAccount och representerar ett enkel bankkonto.
Klassen ska ha ett attribut av typen `double` som representerar saldot på kontot. Klassen ska ska sen ha följande metoder:
`deposit(double belopp)`: Denna metod bör tillåta användaren att sätta in en specificerad summa på kontot.
`withdraw(double belopp)`: Denna metod bör tillåta användaren att ta ut en specificerad summa från kontot, men endast om det finns tillräckligt med pengar.
`getBalance()`: Denna metod bör returnera det aktuella saldot på kontot.
Skapa ett BankAccount-objekt, utför insättningar och uttag samt visa kontosaldo efter varje operation.
### Utmaning del 1
Skapa en Java-klass som heter `Contact` för att representera en persons kontaktinformation. Klassen `Contact` bör ha följande attribut:
`name` (String): Personens namn.
`email` (String): Personens e-postadress.
Skapa en annan Java-klass som heter `ContactList` för att hantera en lista över kontakter. Klassen ska ha en ArrayList av Contact-objekt som attribut. Klassen `ContactList` ska ha följande metoder:
`addContact(String name, String email)`: Skapar en ny kontakt med namn och e-postadress och lägger till den i kontaktlistan.
`removeContact(String name)`: Tar bort en kontakt från kontaktlistan baserat på deras namn.
`showContacts()`: Visar listan över kontakter, inklusive deras namn och e-postadresser.
### Utmaning del 2
Utöka projektet genom att lägga till funktionalitet för läsa och skriva kontakter till fil. Implementera följande metoder i klassen Kontaktlista:
`saveContactsToFile(String fileName)`: Sparar listan över kontakter i en textfil med det angivna filnamnet. Varje kontakt bör skrivas som en rad i filen, inklusive deras namn och e-postadress.
`readContactsFromFile(String fileName)`: Läser in kontakter från en textfil med det angivna filnamnet och fyller på kontaktlistan. Filen bör ha samma format som används för att spara kontakter
Testa ditt program med till exempel följande kod i en main-metod:
```java
public static void main(String[] args) {
ContactList contactList = new ContactList();
// Add contacts
contactList.addContact(new Contact("John Doe", "john@example.com"));
contactList.addContact(new Contact("Alice Smith", "alice@example.com"));
// Display contacts
contactList.displayContacts();
// Save contacts to a file
contactList.saveContactsToFile("contacts.txt");
// Load contacts from a file (optional)
contactList.loadContactsFromFile("contacts.txt");
}
```