Hallo,
ich hoffe hier ein paar Tipps für eine kleine Java Webanwendung zu bekommen. Ich habe zwar Programmiererfahrung, allerdings nicht im Bereich OOP. Was mir quasi fehlt ist das objektorientierte Denken bzw. Herangehen beim Codeaufbau. Intuitiv würde ich einfach alles strukturiert prozedural abarbeiten... Mit diesem Projekt möchte ich die OOP etwas trainieren.
Konkret geht es um einen UserManager für eine JSF Webabwendung. Ich habe also ein "Java-Web-Application" Projekt in Eclipse mit Tomcat 8.5 und PrimeFaces aufgesetzt. Grundsätzlich läuft die Infrastruktur soweit. Mein UserManager soll in der Lage sein folgende Funktionen für den User bereit zu halten:
Es gibt also eine Klasse User:
Für die Schnittstelle mit der Webseite gibt es eine Bean Klasse, in der ich NUR die Daten halten möchte, die auch benötigt werden. Der Tomcat verwendet die Getter/Setter Methoden, um username und password mit den entsprechenden Formularen der XHTML Seite zu verknüpfen.
Für solch ein Login Bean habe ich ein einfaches Beispiel gefunden. Allerdings sind die username und password dort explizit im Code angegeben. Jetzt möchte ich das ganze etwas erweitern und habe eine Klasse UserManager gebaut, die alle vorhandenen und zukünftigen User in einem Vektor halten soll. Es gibt dort also etwas wie:
Somit sollen sämtliche User in dem Vektor users gehalten werden.
Von der Klasse User werden also immer wieder Objekte erzeugt und in users abgelegt oder mit den Einträgen dort verglichen. Der UserManager soll sinngemäß folgende Methoden enthalten:
Hier bin ich allerdings am Ende: Wie starte ich den UserManager vom LoginBean aus? Irgendwie sehe ich nicht den "Anfang" des ganzen Programms. Es gibt schließlich kein "Main".
Wenn es dann ein einziges Objekt des UserManagers gibt, wer erzeugt es? und wie können die anderen Klassen dann die Methoden des UserManagers aufrufen? Die Klasse User kann ich mir bildlich vorstellen, die des UserManagers irgendwie nicht. Ist der ganze Ansatz schlecht gewählt? Sollte der User selbst die Methoden (z.B. hinzufügen zu Datenbank users) besitzen? Aber welche Klasse hat dann die Daten users?
Mittlerweile bin ich ziemlich verwirrt...
PS: Was wäre der geeignete Weg, die Daten zu speichern? Eine SQL Datenbank? Oder gibt es etwas "kleineres"?
ich hoffe hier ein paar Tipps für eine kleine Java Webanwendung zu bekommen. Ich habe zwar Programmiererfahrung, allerdings nicht im Bereich OOP. Was mir quasi fehlt ist das objektorientierte Denken bzw. Herangehen beim Codeaufbau. Intuitiv würde ich einfach alles strukturiert prozedural abarbeiten... Mit diesem Projekt möchte ich die OOP etwas trainieren.
Konkret geht es um einen UserManager für eine JSF Webabwendung. Ich habe also ein "Java-Web-Application" Projekt in Eclipse mit Tomcat 8.5 und PrimeFaces aufgesetzt. Grundsätzlich läuft die Infrastruktur soweit. Mein UserManager soll in der Lage sein folgende Funktionen für den User bereit zu halten:
- User registrieren (Mail + Password)
- User einloggen --> Zugriff auf gesicherten Bereich
- User löschen
- User ausloggen
- User Passwort ändern
Es gibt also eine Klasse User:
Java:
public class User {
public String username;
public String password;
// + getter + setter methods...
}
Java:
@ManagedBean
@SessionScoped
public class LoginBean implements Serializable {
private String username;
private String password;
//...
public String doLogin() {
System.out.println("LoginBean.doLogin");
//...
}
public String doLogout() {
System.out.println("LoginBean.doLogout");
//...
}
public String doRegister() {
System.out.println("LoginBean.doRegister");
//...
}
// + getter + setter methods...
}
Für solch ein Login Bean habe ich ein einfaches Beispiel gefunden. Allerdings sind die username und password dort explizit im Code angegeben. Jetzt möchte ich das ganze etwas erweitern und habe eine Klasse UserManager gebaut, die alle vorhandenen und zukünftigen User in einem Vektor halten soll. Es gibt dort also etwas wie:
Java:
Vector<User> users = new Vector<User>();
Von der Klasse User werden also immer wieder Objekte erzeugt und in users abgelegt oder mit den Einträgen dort verglichen. Der UserManager soll sinngemäß folgende Methoden enthalten:
- loadUsersFromDataBase
- writeUsersToDataBase
- addUser
- validateUser
- deleteUser
Hier bin ich allerdings am Ende: Wie starte ich den UserManager vom LoginBean aus? Irgendwie sehe ich nicht den "Anfang" des ganzen Programms. Es gibt schließlich kein "Main".
Wenn es dann ein einziges Objekt des UserManagers gibt, wer erzeugt es? und wie können die anderen Klassen dann die Methoden des UserManagers aufrufen? Die Klasse User kann ich mir bildlich vorstellen, die des UserManagers irgendwie nicht. Ist der ganze Ansatz schlecht gewählt? Sollte der User selbst die Methoden (z.B. hinzufügen zu Datenbank users) besitzen? Aber welche Klasse hat dann die Daten users?
Mittlerweile bin ich ziemlich verwirrt...
PS: Was wäre der geeignete Weg, die Daten zu speichern? Eine SQL Datenbank? Oder gibt es etwas "kleineres"?