Vinnaren i pepparkakshustävlingen!
2010-12-16, 19:28
  #1141
Medlem
Om man inte anger public eller private (vad är samlingsnamnet för dessa keywords?) eller någonting annat, så är default public om jag har förstått det rätt. Alltså, "int x" är samma sak som "public int x". Väljer man att skriva public istället för att inte skriva någonting alls, av någon annan anledning än att det är ansett som standard och "väl formulerad kod"?
Citera
2010-12-16, 20:28
  #1142
Medlem
frellis avatar
Citat:
Ursprungligen postat av Midro
Om man inte anger public eller private (vad är samlingsnamnet för dessa keywords?) eller någonting annat, så är default public om jag har förstått det rätt. Alltså, "int x" är samma sak som "public int x". Väljer man att skriva public istället för att inte skriva någonting alls, av någon annan anledning än att det är ansett som standard och "väl formulerad kod"?
Detta kallas för visibility modifiers eller access modifiers. Det inte samma sak att skriva public som att inte göra det.

Här har du en liten guide:

public: Samma klass, Samma pack, Subclass, andra pack
protected: Samma klass, Samma pack, Subclass,
Ingen access modifier: Samma klass, Samma pack,
private: Samma klass
Citera
2010-12-16, 21:39
  #1143
Medlem
wootens avatar
Vad är egentligen interface bra för? Om en viss klass implementerar ett interface, måste ju ändå metoderna skrivas i denna klass. Är det bara ett sätt att se vilka metoder som bör finnas i klassen? Jag menar, om en klass implementerar ett interface och när programmet (eller klassen) kompilerar så bestämmer man sig för att deleta interfacet kommer ju programmet fortfarande att bli oförändrat. Interfacet "gör" ju ingenting egentligen förutom att rabbla upp en massa metoder som ändå måste definieras i klassen som implementerar interfacet...
Citera
2010-12-16, 21:48
  #1144
Medlem
Citat:
Ursprungligen postat av frelli
Detta kallas för visibility modifiers eller access modifiers. Det inte samma sak att skriva public som att inte göra det.

Här har du en liten guide:

public: Samma klass, Samma pack, Subclass, andra pack
protected: Samma klass, Samma pack, Subclass,
Ingen access modifier: Samma klass, Samma pack,
private: Samma klass


Ah, tack. Jag kollade på en tutorial som gick igenom lite om klasser och där sa han att det var samma sak att använda public som att inte skriva någonting alls. Tyckte det lät lite underligt så det var därför jag frågade.
Citera
2010-12-16, 23:13
  #1145
Medlem
Citat:
Ursprungligen postat av wooten
Vad är egentligen interface bra för? Om en viss klass implementerar ett interface, måste ju ändå metoderna skrivas i denna klass. Är det bara ett sätt att se vilka metoder som bör finnas i klassen? Jag menar, om en klass implementerar ett interface och när programmet (eller klassen) kompilerar så bestämmer man sig för att deleta interfacet kommer ju programmet fortfarande att bli oförändrat. Interfacet "gör" ju ingenting egentligen förutom att rabbla upp en massa metoder som ändå måste definieras i klassen som implementerar interfacet...

Ändra "bör" till "ska". Ett interface definierar ett kontrakt som de klasser som implementerar det måste uppfylla. Och du kanske inte är helt rätt ute med att det bara är att deleta interfacet hur som helst. Ta ett exempel:

Kod:
public interface Shape {

    double calculateArea();
}

public class Square implements Shape {

    private double size;

    public Square(double size) {
        this.size = size;
    }

    public double calculateArea() {
        return (size * size);
    }
}

public class Circle implements Shape {

    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    public double calculateArea() {
        return (Math.PI * radius * radius);
    }
}

public class ShapeTest {

    public static void main(String[] args) {
        Shape s1 = new Square(5.0);
        Shape s2 = new Circle(10.0);

        System.out.println("Total area = " + calculateTotalArea(s1, s2));
    }

    public static double calculateTotalArea(Shape...shapes) {
        double sum = 0;
        for (Shape shape : shapes) {
            sum += shape.calculateArea();
        }
        return sum;
    }
}

I det här fallet definieras kontraktet av interfacet Shape och andra delar av programmet (metoden calculateTotalArea i ShapeTest) kodas mot interfacet istället för mot respektive konkret implementation av Shape. På så sätt låser man inte in sig mot en specifik implementation (Square eller Circle) och kan lägga till nya implementationer som t.ex. Triangle, Rectangle eller Ellipse utan att programmet (ShapeTest) behöver ändras.

Sen är det väl egentligen en avvägningsfråga om Shape ska vara ett interface eller en abstrakt klass med den abstrakta metoden "double calculateArea()". Hade det varit ett fall där alla konkreta implementationer till viss eller stor del innehåller samma saker hade det kanske varit en bättre idé att köra på en abstrakt basklass istället för att slippa skriva om samma kod.
Citera
2010-12-17, 08:13
  #1146
Medlem
wootens avatar
Tack så mkt!
__________________
Senast redigerad av wooten 2010-12-17 kl. 08:25.
Citera
2010-12-17, 13:45
  #1147
Medlem
El Pulgos avatar
Hoj!

Har lite problem med min kod, då det inte fungerar som det ska.

Har gjort ett interface där man kan lägga till, ändra och söka efter en produkt.
Mitt program kan lägga till en produkt. Men när jag sedan söker på produkten så hittar den inte den.

Problemet är att jag har läst igenom koden 100 ggr, har likadana metoder för en kund som fungerar utmärkt. Har alltså jämfört dessa väldigt noga jättemånga gånger för att se vad som skiljer sig. Men inget verkar skilja sig varken i UI-klassen, controllern eller modellen.

Det står heller inget om varför den inte hittar något. Inget kompileringsfel eller något.
Jag är helt utlämnad. Har ingen aning alls och inga hintar ges om var det kan vara fel.

Finns det något sätt att försöka ta reda på vad som är fel när det inte blir kompileringsfel?

Kan eventuellt klistra in koden om någon vill ta sig en titt. Men det är ganska mycket kod i olika klasser som hänger ihop :/
Citera
2010-12-17, 18:10
  #1148
Medlem
Någon som har tips på enkla program som man kan skriva för att lära sig? Känns som man lär sig bäst när man gör något eget istället för att sitta och halv-kopiera kod. Enhetskonverterare och liknande saker bör jag kanske tillägga är under min nivå.
Citera
2010-12-17, 20:44
  #1149
Medlem
Hej

Kod:
public int tagut(int belopp) {
        
int s=hämtaSaldo();
        if (
belopp<=s+kredit) {
            
s-=belopp;
            
sättSaldo(s);            
            return 
belopp;
        }
        
        
int uttaget=s+kredit;
        
sättSaldo(-kredit);

        
        return 
uttaget
    } 

Här är en funktion som sätter saldots värde i variabeln s, och som om beloppet är mindre än saldot och krediten tillsammans, minskar saldot med beloppet.

Sen kommer return in och avbryter funktionen.. och "returnar" belopp. Men varför just belopp? Det funktionen gör fungerar ju precis likadant även om jag byter ut belopp och skriver nåt random nummer där istället.

Samma sak med det andra return-statement-et. Kan ta bort raden "int uttaget=s+kredit;" och byta ut uttaget mot nåt nummer och det fungerar ändå. Så vad har det för betydelse?

Tack för svar
Citera
2010-12-17, 21:56
  #1150
Medlem
demitos avatar
Citat:
Ursprungligen postat av FunkDoctorSpock
Sen kommer return in och avbryter funktionen.. och "returnar" belopp. Men varför just belopp? Det funktionen gör fungerar ju precis likadant även om jag byter ut belopp och skriver nåt random nummer där istället.

Samma sak med det andra return-statement-et. Kan ta bort raden "int uttaget=s+kredit;" och byta ut uttaget mot nåt nummer och det fungerar ändå. Så vad har det för betydelse?
Tänk dig att du har en klass "Sedeluppräknare." Då kan du göra
Kod:
uppräknare.mataUtSedlar(konto.tagut(100));
för att dra bort 100 kr från kontot och mata ut 100 kr. Rent generellt används returnvärden just för att kunna matas in i andra funktioner.

Citat:
Ursprungligen postat av Midro
Någon som har tips på enkla program som man kan skriva för att lära sig? Känns som man lär sig bäst när man gör något eget istället för att sitta och halv-kopiera kod. Enhetskonverterare och liknande saker bör jag kanske tillägga är under min nivå.
Köp en bok eller hitta en ordentlig onlinekurs. Mycket bättre att lära sig så än fläckvis. Om inte så får du bestämma dig för vad du vill öva upp: vill du skriva algoritmer, bygga grafiska gränssnitt eller göra en objektorienterad modell av något med en massa samverkande klasser?
Citera
2010-12-17, 22:30
  #1151
Medlem
neuffss avatar
Citat:
Ursprungligen postat av Midro
Någon som har tips på enkla program som man kan skriva för att lära sig? Känns som man lär sig bäst när man gör något eget istället för att sitta och halv-kopiera kod. Enhetskonverterare och liknande saker bör jag kanske tillägga är under min nivå.
Project euler
spoj.pl
codingbat.com
Citera
2010-12-18, 00:49
  #1152
Medlem
TopZzs avatar
Hej!

Jag har tänkt att pröva på lite kodning i Java (har aldrig programmerat förut). Har läst lite i en bok som jag känner är ganska bra, men den tar inte upp hur man skaffar alla filer man behöver för att kunna köra sin kod.

Jag har förstått att man behöver en kompilator och en interpreter. På flashback och andra hemsidor rekommenderas JDK och JRE paketen mest. Båda är nu nedladdade men jag hittar inte vad jag behöver...JDK mappen är gigantisk med en tusental småfiler överallt. Försöker hitta filer som har "compiler" i namnet men hittar ingenting. Vad är det jag ska göra egentligen?
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback