java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Java - Programmierung > Allgemeine Java-Themen

Allgemeine Java-Themen Allgemeine Themen, die nicht in andere Fachforen und nicht zu den Java Basics passen

Thema geschlossen     Ist dieses Thema erledigt?
Themen-Optionen Thema durchsuchen Ansicht
Alt 29.08.2009, 23:07   #1 (permalink)
Neuer Benutzer
short
 
Registriert seit: 01.08.2009
Fachbeiträge: 17
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard Zu viele Felder.

Ich habe mir eine einfache Filmdatenbank gebastelt, die auch soweit funktioniert. Nun bin ich dabei, neben Erweiterungen, den Code zu optimieren.
Meine Filme werden dabei in einem Objekt gespeichert, das viele Felder besitzt. Meine Frage ist nun, ob es noch andere Möglichkeiten gibt, dies zu realisieren? Zudem sind die Felder public und werden auch direkt angesprochen. Vlt. hat jemand noch eine Idee zur Verbesserung, z.B. wie es effizienter und speicherschonender sein kann. Ich wäre euch verbunden.

Hier nun die Datei:

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package smdb.core;
 
import java.io.Serializable;
import java.util.ArrayList;
 
import smdb.core.manage.ScoreManager;
import smdb.ui.form.SerializableImage;
 
public class Movie implements Serializable {
    
    private static final long serialVersionUID = -7325748851764473930L;
    private int id;
    public String title = "";
    public String originalTitle = "";
    public String originalLanguage = "";
    public String country = "";
    public String year = "";
    public String genre = "";
    public String length = "";
    public String plot = "";
    public String plotAuthor = "";
    public String fsk = "";
    public boolean watched = false;
    public ArrayList<String> direction = new ArrayList<String>(0);
    public ArrayList<String> actors = new ArrayList<String>(0);
    public ArrayList<String> actorsRole = new ArrayList<String>(0);
    private ScoreManager scoreM;
    public String path = "";
    public ArrayList<String> fileNames = new ArrayList<String>(0);
    public String coverName = "";
    public SerializableImage cover = null;
    public String quality = "";
    public String notice = "";
    
    public Movie(int id) {
        this.id = id;
        scoreM = new ScoreManager();
    }
 
    public int getID() {
        return(id);
    }   
    
    public ScoreManager getScoreManager() {
        return(scoreM);
    }
}

Geändert von StifMB (29.08.2009 um 23:38 Uhr)
StifMB ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 30.08.2009, 00:26   #2 (permalink)
Stammbenutzer
Floppy Disc
 
Registriert seit: 04.03.2009
Fachbeiträge: 858
Blog-Einträge: 1
Abgegebene Danke: 1
Erhielt 163 Danke für 148 Beiträge
Üblich ist eigentlich die Verwendung von gettern und settern.
Das rührt daher, das einige Serialisierer auf die Getter und Setter zugreifen um ihre Arbeit zu verrichten.

Zum Interface Serializable gehört eigentlich noch ein Defaultkonstruktor. Weil, der ein oder andere Serialisierer sich irgendwie ein Objekt erzeugen muß, das er mit den Serialisierten Daten befüllt.

Bei so Geschichten wie String country, kann man sich überlegen ob man statt String auf Enums umsteigt. Sonst könnte es sein, daß man Filme aus Deutschland, Germany, Deutsch, D, Deu und Ger hat. Genre und Language sind ähnlich gelagert.

Stehen actors und actorsRole in einer Verbindung zueinander, so kann man ein weiteres (Serialisierbares) Objekt verwenden. z.B. Role das einen Titel und einen Actor hat.

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
public ArrayList<String> direction = new ArrayList<String>(0);
//sollte dann schon so aussehen
public List<String> direction = new ArrayList<String>();

Zahlen für year und length?
JohannisderKaeufer ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 30.08.2009, 00:37   #3 (permalink)
Stammbenutzer
Viertel Megabyte
 
Registriert seit: 04.05.2009
Fachbeiträge: 305
Abgegebene Danke: 1
Erhielt 37 Danke für 34 Beiträge
Wenn Du viele einzelne Variablen nicht magst, ist HashMap dazu vielleicht eine Alternative. (Dies wäre beispielsweise einfach zu ändern, wenn Du jetzt schon Getter und Setter hättest.)
Wortraum ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 31.08.2009, 02:49   #4 (permalink)
Neuer Benutzer
short
Themenstarter
 
Registriert seit: 01.08.2009
Fachbeiträge: 17
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Ich danke für die Antworten und Hinweise. Ich habe meine Klasse komplett überarbeitet und auch getter und setter benutzt. Allerdings wird die Klasse dadurch recht groß und unübersichtlich wie ich finde. Habe nun auch eine HashMap verwendet, dadurch wird das gespeicherte Objekt kleiner, sofern Felder leer bleiben. Danke nochmals. Mit Enums muss ich mich aber noch beschäftigen.

Eine Frage hätte ich aber noch: Warum muss/sollte ich List<String> verwenden?

Java Code: Quelltext in neuem Fenster öffnen
1
public List<String> direction = new ArrayList<String>();

Das Wichtigste wäre dann noch das automatische Abfragen von Filminformationen ... aber wie ich das hinbekommen soll ... o.O ...
StifMB ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 31.08.2009, 08:27   #5 (permalink)
Stammbenutzer
Halbes Gigabyte
 
Benutzerbild von Landei
 
Registriert seit: 06.04.2005
Fachbeiträge: 5.441
Blog-Einträge: 15
Abgegebene Danke: 193
Erhielt 689 Danke für 566 Beiträge
Man sollte generell "gegen das Interface" (List, Map, Set usw.) programmieren. Wenn du aus irgendwelchen Gründen einmal eine andere Listenimplementierung als ArrayList einsetzen willst (LinkedList, CopyOnWriteArrayList usw.), musst du nicht überall rumändern.

Eine Analogie: Es gibt keinen abstrakten "Schraubenschlüssel", sondern immer nur Modelle von bestimmten Firmen. Trotzdem wirst du in keiner Bauanleitung finden: "Nehmen Sie einen 13er Schraubenschlüssel Drehfix der Firma Schraubgut", sondern die allgemeinste Bezeichnung für ein Gerät, was die Arbeit erledingen kann, also "13er Schraubenschlüssel". Diese "allgemeinste Bezeichnung" ist hier das Interface. Du kannst damit Code schreiben, der mit beliebigen Listentypen umgehen kann.
__________________
... oder nimm einfach Scala! Bereit für die eSCALAtion?
Landei ist gerade online  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Thema geschlossen     Ist dieses Thema erledigt?

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Felder dynamisch erzeugen! AWT, Swing, JavaFX & SWT 3 23.04.2008 12:00
Felder unterschiedlichen Typs Reen Java Basics - Anfänger-Themen 9 24.04.2007 08:16
JSplitPane Felder ansprechen jeanfischer AWT, Swing, JavaFX & SWT 3 18.02.2006 08:41
mit reflection an die felder einer klasse rankommen Allgemeine Java-Themen 4 13.09.2005 15:26
Felder vergleichen Destiny1985 Java Basics - Anfänger-Themen 14 17.02.2005 12:22


Lesezeichen

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:06 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de