Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [JAVA] dichiarare un metodo astratto

    ciao, ho un piccolo problema:
    mi serve di dichiarare un metodo astratto all'interno di una classe.
    Il compilatore però mi dà un errore dicendo che anche la classe deve essere astratta per contenere metodi astratti.
    Solo che se la metto astratta poi mi da errore ogni volta che cerco di assegnare una variabile di quella classe.

    come faccio?
    Flash Developer for Rich Media
    PHP, jQuery Developer

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] dichiarare un metodo astratto

    Originariamente inviato da Miroku
    ciao, ho un piccolo problema:
    mi serve di dichiarare un metodo astratto all'interno di una classe.
    Il compilatore però mi dà un errore dicendo che anche la classe deve essere astratta per contenere metodi astratti.
    Solo che se la metto astratta poi mi da errore ogni volta che cerco di assegnare una variabile di quella classe.
    Eh no, le regole sono proprio quelle!! Una classe può essere marcata abstract ma non necessariamente avere metodi abstract. Se però c'è anche solo 1 metodo abstract, allora la classe deve essere marcata abstract. Una classe abstract non può essere istanziata.

    Detto questo, dovresti spiegare quello che vuoi fare, perché così come lo spieghi non ha molto senso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    E' necessario realizzare in JAVA le seguenti classi:
    • Tag, che rappresenta un generico tag HTML. L’implementazione di questa
    classe deve prevedere di:
    – poter istanziare un elemento della classe a partire da una stringa che
    ne contiene la sua descrizione
    – inserire nella classe il metodo astratto void updateStatistics(StatisticsCollector
    stat) (vedere oltre).

    • StatisticsCollector, la cui istanza permette di memorizzare nel proprio
    stato il numero di tag strutturali (divisi per livello), di collegamento, di
    presentazione in generale e di presentazione fisica, nonch´e il numero di altri
    tag presenti in un documento HTML (accorpando un tag di apertura con il
    corrispondente tag di chiusura: ad esempio un tag e il corrispondente
    tag di chiusura
    verranno conteggiati assieme). Un’istanza di questa
    classe viene utilizzata come argomento nel metodo updateStatistics
    della classe Tag al fine di aggiornare lo stato dell’istanza stessa sulla base
    del tipo del tag su cui viene eseguito il metodo.
    queste sono le parti del progetto che interessano il metodo astratto updateStatistics
    E' palese che Tag non deve avere costruttore nullo ma se voglio mettere un metodo astratto deve essere astratto anche lui e (a quanto ho capito) avere costruttore nullo.

    quindi non saprei come fare.
    Flash Developer for Rich Media
    PHP, jQuery Developer

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Mi pare ovvio che tu debba creare una classe astratta TAG e tante sottoclassi concrete, ad esempio "Body" (che rappersenta il TAG BODY), "Script" (che rappresenta il TAG SCRIPT), "Meta" (che rappresenta il TAG META)...

    Tutte sottoclassi che estendono TAG....


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    no no... il documento completo del progetto spiega bene come suddividere le varie classi.
    e quello che ho postato basta per capire che chiede un costruttore non nullo in Tag ma vuole anche che abbia un metodo astratto al suo interno >_<
    Flash Developer for Rich Media
    PHP, jQuery Developer

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Miroku
    queste sono le parti del progetto che interessano il metodo astratto updateStatistics
    E' palese che Tag non deve avere costruttore nullo ma se voglio mettere un metodo astratto deve essere astratto anche lui e (a quanto ho capito) avere costruttore nullo.
    Già dire "costruttore nullo" non ha senso .....

    Comunque se ho ben capito, non devi realizzare una gerarchia di classi che rappresentano i vari tag HTML specifici ma bensì devi realizzare una unica classe Tag che rappresenta un "nodo" all'interno di un documento HTML.

    Un documento XML/HTML, in generale, lo puoi vedere come un "albero di nodi". Un nodo ha 1 nome, ha 0 o più attributi, ha 1 parent e ha 0 o più child. Punto.

    Se il tuo testo dice che devi poter istanziare oggetti di tipo Tag ma che al suo interno deve avere un metodo abstract, allora la questione è stata posta male ... molto male.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Dannato M******d -.-

    va beh... mi limiterò a fare un metodo uguale per tutte le sottoclassi di Tag
    Flash Developer for Rich Media
    PHP, jQuery Developer

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Miroku
    va beh... mi limiterò a fare un metodo uguale per tutte le sottoclassi di Tag
    Ok ... proviamo a scrivere del codice, che sennò non ci capiamo.

    Devi quindi fare una cosa del tipo:

    codice:
    abstract class Tag
    {
        private String name;
        
        public Tag (String name)
        {
            this.name = name;
        }
        
        // ...... altro ......
    }
    
    
    class BodyTag extends Tag
    {
        public BodyTag ()
        {
            super ("body");
        }
    
        // ...... altro ......
    }
    ?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    più o meno...
    le classi obbligatorie che devo implementare sono:
    Tag, LinkTag, PresentationTag, StructuralTag, OtherTag.

    tutte devono avere il metodo updateStatistics che aggiorna le statistiche sul numero di volte che si è usato un certo tipo di tag presente nelle istanze di una classe chiamata StatisticsCollector.
    Flash Developer for Rich Media
    PHP, jQuery Developer

  10. #10
    Originariamente inviato da Miroku
    Dannato M******d -.-

    va beh... mi limiterò a fare un metodo uguale per tutte le sottoclassi di Tag

    Ehm ehm ehm...

    Mi sa di si.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.