Java är ett Objektorienterat språk.
Detta innebär att ditt program ska kunna struktureras upp i olika objekt med direkt eller "tänkt" liknelse med verkligheten. Klasserna beskriver egenskaper och funktioner hos objektet.
Klassen "Bil" kan tex beskriva "färg" och "antal hästkrafter", och ha funktionerna "tuta" och "starta".
När man vill skapa en Bil, tex "minBil" så skapas ett objekt eller en "instans" av klassen. funktionerna hos objektet minBil kommer man åt genom punktoperatorn: minBil.starta() eller minBil.getAntalHästkrafter()
Ett objekt skapas genom någon av klassens konstruktorer och operatorn "new". Bil minBil = new Bil("röd", 150); vilket skapar en ny röd Bil med 150 hästKrafter. Det kan även finnas andra konstruktorer som tar fler argument samt en standardkonstruktor som inte tar några argument och skapar tex en ofärgad Bil utan hästKrafter; Bil minBil = new Bil();
Det anses som standard att alltid skapa "set" och "get"-funktioner hos egenskaperna. I java kallas egenskaperna klassvariabler och funktionerna kallas metoder.
För att ytterligare likna verkligheten, finns en hierarki som gör att klasser kan ärva egenskaper eller metoder från den överliggande klassen, superklassen. Våran klass Bil kan tex vara en subklass till Fordon och ha en systerklass Flyg. Flyg och Bil har en är-relation till klassen Fordon. Andra relationer kan vara har- eller känner till. Klassen Flyg har klassen Vinge och känner till klassen Passagerare.
Klassbiblioteket
Du behöver inte uppfinna hjulet på nytt varje gång, utan det finns färdiga klasser till det mesta och tillhörande dokumentation på sun's hemsida.
Du kan dessutom själv skapa klassbibliotek med klasser som du kan använda om flera gånger.
Utvecklingsmiljö - IDE
Eftersom det finns ganska mycket att välja mellan och inte alltid helt lätt att minnas exakt vad klasser, funktioner och variabler heter, kan det vara bra att ha ett hjälpmedel vid programutveckling. Där får Du hjälp med att överblicka dina projekt, klasser m.m och hjälp med alla funktioner som finns inom en klass bara genom att skriva .-operatorn till en instans.
Mer om just ett sådant hjälpmedel - en IDE, Integrated Development Environment i nästa kapitel.
fredag 30 januari 2009
torsdag 29 januari 2009
1. Komma igång och ett första program
För att kunna göra ditt första program behöver Du:
1. Skriva Programkoden
Det absolut första programmet gör inget avancerat, utan skriver bara ut lite text i ditt DOS, eller command-fönster:
2. Kompilera koden
I Sun JDK, som Du såklart laddat ner och installerat finns det ett litet program som heter javac.exe .
När Du hittat katalogen ditt lilla program ligger i och bytt till den katalogen, skriver du:
Du kan även ställa dig i bin-mappen och skriva hela sökvägen till din Prog1.java fil.
3. Kör programmet

När Du lyckats kompilera Din kod ska det ha skapats en fil med samma namn som din klass och med filändelsen .class, dvs Prog1.class i samma katalog som java-filen (c:\).
För att köra programmet, skriv:
- Skriva ett javaprogram
- Översätta eller "kompilera" programmet
- Köra (exekvera) programmet
1. Skriva Programkoden
Det absolut första programmet gör inget avancerat, utan skriver bara ut lite text i ditt DOS, eller command-fönster:
class Prog1 {Dessa rader skriver Du in i ett vanligt textdokument och döper till Prog1.java, dvs filens namn samma som "klassen". För beskrivning av tex int och String, se ordlistan.public static void main(){}
int i = 1;
String s1 = new String("Jag ar ditt ");
String s2 = new String("a program");
System.out.println(s1 + i + s2);
}
2. Kompilera koden
I Sun JDK, som Du såklart laddat ner och installerat finns det ett litet program som heter javac.exe .
När Du hittat katalogen ditt lilla program ligger i och bytt till den katalogen, skriver du:
c:\>C:\Program\Java\jdk1.6.0_11\bin\javac Prog1.javaObservera att jag för enkelhetens skull lagt min fil direkt under c:\
Du kan även ställa dig i bin-mappen och skriva hela sökvägen till din Prog1.java fil.
C:\Program\Java\jdk1.6.0_11\bin>javac C:\Prog1.java
3. Kör programmet

När Du lyckats kompilera Din kod ska det ha skapats en fil med samma namn som din klass och med filändelsen .class, dvs Prog1.class i samma katalog som java-filen (c:\).
För att köra programmet, skriv:
c:\>C:\Program\Java\jdk1.6.0_11\bin\java Prog1.classDu får då - om allt fungerar - en utskrift på skärmen:
Jag ar ditt 1a program!!Tadaaa!!! Du har skrivit, kompilerat och exekverat Ditt första java-program!!
onsdag 28 januari 2009
En liten presentation
Varför JAVA-skola?
Tänkte börja lite smått med att presentera målet/syftet med denna blogg;
- Har studerat java på högskola för många år sedan och behöver fräscha upp kunskaperna.
- Ett uppslagsverk för kommande situationer (då jag glömt något igen:-)
- En referens till ev. framtida arbetsgivare.
- Ett trevligt tidsfördriv.
do-while - slingor
Denna slinga fungerar ungefär som while-slingan, men genomförs alltid minst EN gång:
int villkor = 0;Användbart om det som händer i slingan MÅSTE hända minst en gång för att villkoret ev. ska bli false, tex läsa från en fil eller ström.
do
{// Här görs något minst en gång...} while(villkor<10);
i++; // i detta fall 10 ggr
for-slingan
Ack så viktig så fort man ska upprepa något. Den ser ut så här:
for(int i = 0; i<10; i++)Detta upprepar slingan 10 ggr, dvs med i mellan 0 och 9. När i=10 är i<10 falskt.
{
// Här görs något...
System.out.println("Nu är i = " + i);
}
tisdag 27 januari 2009
Ordlista
public
Klassen, variabeln eller metoden är synlig utifrån och inte bara i sin egen klass eller metod. main måste vara public.
private
Klassen, variabeln eller metoden är bara synlig inom sin egen klass eller metod.
static
Klassmetod. Metoden tillhör klassen och inte en instans av klassen. main-metoden är static.
String
En klass för att hantera text. Skapas tex genom String s = new String("Lite text...");
Innehåller många metoder för att manipulera text, tex s = s.toUppercase() som konverterar texten i s till STORA bokstäver.
Läs mer här.
int
En numerisk datatyp för lagring av 32-bitars heltal, max -2'147'483'648 till +2'147'483'647.
Klassen, variabeln eller metoden är synlig utifrån och inte bara i sin egen klass eller metod. main måste vara public.
private
Klassen, variabeln eller metoden är bara synlig inom sin egen klass eller metod.
static
Klassmetod. Metoden tillhör klassen och inte en instans av klassen. main-metoden är static.
String
En klass för att hantera text. Skapas tex genom String s = new String("Lite text...");
Innehåller många metoder för att manipulera text, tex s = s.toUppercase() som konverterar texten i s till STORA bokstäver.
Läs mer här.
int
En numerisk datatyp för lagring av 32-bitars heltal, max -2'147'483'648 till +2'147'483'647.
måndag 26 januari 2009
Upplägget
Meningen är att detta ska bli en liten javaskola i 10 steg, med sånt som jag tycker kan vara bra att kunna och för min egen skull gå igenom igen för att friska upp gamla kunskaper och även skaffa nya.
Exakt VAD de 10 stegen ska innehålla är inte spikat än, men det blir kanske ungefär såhär:
Slingor, olika while-, case-satser och liknande smått o gott lägger jag in under separata inlägg, så inte de 10 stegen blir för många, långa och "iväg-svävande".
Dessutom blir det lättare för mig och andra att hitta vad som man behöver ta en snabbkoll på.
Exakt VAD de 10 stegen ska innehålla är inte spikat än, men det blir kanske ungefär såhär:
- Komma igång
- Klasser (ska kompletteras med UML-diagram)
- IDE - Integrated Development Environment
- GUI - Graphic User Interface
- Events
- Filer & arrayer
- Klient/server-applikationer
- JSP - Java Server Pages
- Java i mobilen
- Lite annat smått o gott...
Slingor, olika while-, case-satser och liknande smått o gott lägger jag in under separata inlägg, så inte de 10 stegen blir för många, långa och "iväg-svävande".
Dessutom blir det lättare för mig och andra att hitta vad som man behöver ta en snabbkoll på.
torsdag 1 januari 2009
GUIdemo - hela programmet
import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.TitledBorder;
public class GUIdemo {
// Create buttons, panels etc
//
private GUIdemo() {
//Create and set up the window.
JFrame frame = new JFrame("GUIdemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Create panels
JPanel mp = new JPanel(); // Main panel
JPanel bp = new JPanel(); // Button panel
JPanel np = new JPanel(); // North Panel
mp.setLayout(new BorderLayout());
bp.setLayout(new FlowLayout());
np.setLayout(new FlowLayout());
np.setBorder(new TitledBorder("North Panel"));
bp.setBorder(new TitledBorder("Buttonpanel"));
mp.setBorder(new TitledBorder("Main Panel"));
// Create buttons to button panel
bp.add(new JButton("Panelbutton1"));
bp.add(new JButton("Panelbutton2"));
mp.add(bp, BorderLayout.SOUTH);
// Add stuff to north panel
np.add(new JLabel("JLabel"));
np.add(new JButton("JButton"));
// Create Choice-list and add to np.
Choice ch = new Choice();
ch.add(new String("Choice"));
ch.addItem(new String("-list"));
np.add(ch);
// Create textarea
JTextArea ta = new JTextArea(10, 20);
ta.append("JTextArea\ninside a JScrollPane");
ta.setLineWrap(true);
JScrollPane scrPane = new JScrollPane(ta);
scrPane.setBorder(new TitledBorder("JScrollPane"));
// Add panels and labels to main panel
mp.add(np, BorderLayout.NORTH);
mp.add(bp, BorderLayout.SOUTH);
mp.add(new JLabel("East"), BorderLayout.EAST);
mp.add(new JLabel("West"), BorderLayout.WEST);
mp.add(scrPane, BorderLayout.CENTER);
// Add main panel to mainframe
frame.getContentPane().add(mp);
// Tweak the Frame
frame.setMinimumSize(new Dimension(300, 300));
frame.setLocation(400, 400);
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
GUIdemo g = new GUIdemo();
}
});
}
}
import java.awt.Choice;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.TitledBorder;
public class GUIdemo {
// Create buttons, panels etc
//
private GUIdemo() {
//Create and set up the window.
JFrame frame = new JFrame("GUIdemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Create panels
JPanel mp = new JPanel(); // Main panel
JPanel bp = new JPanel(); // Button panel
JPanel np = new JPanel(); // North Panel
mp.setLayout(new BorderLayout());
bp.setLayout(new FlowLayout());
np.setLayout(new FlowLayout());
np.setBorder(new TitledBorder("North Panel"));
bp.setBorder(new TitledBorder("Buttonpanel"));
mp.setBorder(new TitledBorder("Main Panel"));
// Create buttons to button panel
bp.add(new JButton("Panelbutton1"));
bp.add(new JButton("Panelbutton2"));
mp.add(bp, BorderLayout.SOUTH);
// Add stuff to north panel
np.add(new JLabel("JLabel"));
np.add(new JButton("JButton"));
// Create Choice-list and add to np.
Choice ch = new Choice();
ch.add(new String("Choice"));
ch.addItem(new String("-list"));
np.add(ch);
// Create textarea
JTextArea ta = new JTextArea(10, 20);
ta.append("JTextArea\ninside a JScrollPane");
ta.setLineWrap(true);
JScrollPane scrPane = new JScrollPane(ta);
scrPane.setBorder(new TitledBorder("JScrollPane"));
// Add panels and labels to main panel
mp.add(np, BorderLayout.NORTH);
mp.add(bp, BorderLayout.SOUTH);
mp.add(new JLabel("East"), BorderLayout.EAST);
mp.add(new JLabel("West"), BorderLayout.WEST);
mp.add(scrPane, BorderLayout.CENTER);
// Add main panel to mainframe
frame.getContentPane().add(mp);
// Tweak the Frame
frame.setMinimumSize(new Dimension(300, 300));
frame.setLocation(400, 400);
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
GUIdemo g = new GUIdemo();
}
});
}
}
Prenumerera på:
Inlägg (Atom)