Anvendelse af metoder - Programmering

Relaterede dokumenter
Hvad er Objekter - Programmering

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

Singleton pattern i Java

Java Klasse nedarvninger

Send fra Java. Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende fra Java.

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

Undtagelseshåndtering i C#

Singleton pattern i C#

Database design for begyndere

SESSION med PHP. En let begynderguide som kan føre dig ind i en verden af muligheder. Denne guide er oprindeligt udgivet på Eksperten.

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste

Den forudsætter kendskab til XML og C# men ikke til brug af XML i C#.

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Med register_globals = On får du automatisk adgang til en række variabelnavne i dit script.

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Test med JUnit 3. Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det.

At klippe en streng over på det mest hensigtsmæssige sted

Afsending af s vha. ASP

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Parameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET.

Introduction til.net remoting i C#

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

Aftenskole i programmering sæson Core Data del 2. Sæson 2-13

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge.

Bits, bit operationer, integers og floating point

RMI avanceret. Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer.

I denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder.

Introduktion til funktioner, moduler og scopes i Python

I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.

Denne artikel er en detaljeret gennemgag af det fundamentale i batchfiler til hjemmebrug :-) FEEL THE POWER! ;-)

Klasser og objekter. (Afsnit i manualen)

Hvilket sprog er hurtigst

14.1 Internationale programmer

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.

Denne artikel er til dem der ønsker at vide mere om hvad CSS er og hvad CSS kan bruges til hvad angår WWW.

Forelæsning Uge 4 Torsdag

Ugeseddel 4 1. marts - 8. marts

Virkefeltsregler i Java

DM502. Peter Schneider-Kamp

Kontrol-strukturer i PHP

Loginsystem (med MySQL)

Skrevet den 18. Feb 2010 af arne_v I kategorien Programmering / Visual Basic.NET

Mozilla Firefox (tidligere Firebird): Fremhæve ord

Forelæsning Uge 2 Torsdag

Brugerdefineret menuer i Access

SWC Elementer i klassedefinition

Forelæsning Uge 1 Torsdag

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

Forelæsning Uge 4 Torsdag

Forelæsning Uge 2 Torsdag

Abstrakte datatyper C#-version

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

Den forudsætter kendskab til XML og VB.NET men ikke til brug af XML i VB.NET.

Sådan skriver du artikler til Eksperten!

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

Delphi og Databaser for begyndere

DANMARKS TEKNISKE UNIVERSITET

Forelæsning Uge 1 Torsdag

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

Logging i Java. Den forudsætter kendskab til Java og noget generel udviklings erfaring. Denne guide er oprindeligt udgivet på Eksperten.

Introduction til.net remoting i VB.NET

Dynamisk PHP design OPDATERET

Løsning af møntproblemet

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

Test af It-komponent

Forelæsning Uge 2 Mandag

Delphi - CrackMe og Keygen

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 18/ Side 1 af 11

Regulære udtryk, 2. del

Upload af billeder/filer for nybegyndere Del. 2

XML parsning i Java. Denne artikel beskriver hvordan man parser XML i Java. Den beskriver W3C DOM, SAX og JDOM.

Offset til terminalskærm i Java

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 6

Arrays i PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 04. Feb 2009 af taskmgr I kategorien Programmering / PHP

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox

I denne artikel vil du ved hjælp af arrays kunne afrunde et decimaltal til et helt tal.

Forelæsning Uge 4 Torsdag

SIGIL Sådan opretter du en e- bog Step by Step

Simpel upload af filer

Forelæsning Uge 2 Torsdag

Start på javascript. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 03. Feb 2009 af webstuff I kategorien Programmering / JavaScript

Ekstra hastighed med array's i Excel-VBA

Forskellige Java versioner

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.

Introduktion til ant. Denne artikel beskriver Apache ant, som er et værktøj til at builde Java applikationer med.

Forelæsning Uge 2 Torsdag

Din egen hjemmeside UNI C 2008 Pædagogisk IT-kørekort Basismodul 3

Gør Administrator-brugeren til almindelig bruger

Endnu mere om tilfældige tal

02101 Indledende Programmering Introduktion til Eclipse

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato:

Grundlæggende Programmering ITU, Efterår Skriftlig eksamen i Grundlæggende Programmering

Ratingsystem i PHP og MySQL

I mit script tager jeg højde for det problem ved, at gemme et unikt tal mellem 0-9 på 6 cifre og derved vil de så blive vist som 2 online.

PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections;

Rekursion C#-version

A Profile for Safety Critical Java

Fundamentale sprogbegreber

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX

Transkript:

Denne guide er oprindeligt udgivet på Eksperten.dk Anvendelse af metoder - Programmering En forhåbentlig rigtig god forklaring på hvad metoder er og hvordan de anvendes. Lidt om private og public, retur typer og hvad jeg ellers kunne komme på. Forklaring på babysprog. Håber jeg. Skrevet den 05. feb 2009 af kalp I kategorien Programmering / Java ARTIKEL ER HERMED GRATIS:) 27/5-05 Hvis du ikke har programmeret meget vil jeg anbefale du først læser http://www.eksperten.dk/artikler/600 om objekter for så vil du helt sikkert bedre kunne forstå denne artikel om metoder:) Vil sige denne er bygget videre på den anden. Derfor starter vi ud med, at oprette en tom klasse vi vil kalde for "Person". public class Person Er ikke en metode. Det er en konstruktør for klassen og på nuværende tidspunkt er den tom. Dvs. når man opretter et objekt af klassen Person er der ikke noget kode, som først skal blive kørt. Hvordan kan man se det er en konstruktør og ikke en metode? Det er faktisk ret simpelt. En konstruktør har samme navn, som klassen. I dette tilfælde hedder klassen "Person" og det samme hedder konstruktøren altså også. Yderliger har en konstruktør ingen retur værdi! Det betyder, at når man opretter et objekt af klassen Person så skal der ikke sendes noget information tilbage til den klasse, som vil oprette objektet. Med andre ord er forventes aldrig, at der sendes noget retur fra en konstruktør, men maks, at noget kode skal blive kørt. Det vil give mere mening så snart du har læst resten af denne tekst igennem:) Hvordan ser skelletet til en metode så ud? En metode har følgende punkter. Punkt 1. Skal den være synlig for andre klasser? eller skal metoden kun kunne kaldes af klassen selv? Til dette anvendes følgende - public = synlig for alle klasser - private = usynlig for andre klasser. Punkt 2. Metoden skal have en retur type. Her afhænger dette af hvad man vil have der skal sendes tilbage til der hvor metoden bliver kaldt! Til dette anvendes (uddrag) - void = der skal ikke sendes noget retur, men kun afvikles den kode i metoden. - String = der skal sendes en String retur

- int = der skal sende int retur - Object = Der skal sendes et objekt retur. Her kan man også godt skrive "Person" hvis der skal sende et person objekt tilbage. Punkt 3. Navn på metoden. Det bestemmer du helt selv! Men helst noget sigende! Det bedste er, at skrive det første ord med småt og efterfølgende ords første bogstav med stort. Prøv at holde det så kort som muligt og dog stadig sigende. Eks. hentalder, nytnavn. Punkt 4. Parametre som man gerne vil have med når metoden kaldes. Det kan være metoden skal udregne summen af to tal så ville det være smart hvis man sendte de to tal med som parametre og så kan metoden udregne hvad summen giver og sende det retur:) Nåh! men her får i nogen eksempler på forskellige metoder så det giver lidt mere mening. Vi vil lave nogen public metoder i vores person klasse, metoder som sender data retur, metoder som kræver man sender parametre med og metoder som ikke sender noget retur altså lidt af hvert. nytnavn(); Denne metode skal være public eftersom vi vil have, at alle andre klasser skal kunne se den. Den skal ikke sende noget data retur. Den skal have en parameter med nemlig en String (navnet man vil give personen). public void nytnavn(string navn) for at dette skal virke må vi lige lave en attribut i vores person klasse som hedder fornavn. Mit ser sådan her ud public class Person private String fornavn; public void nytnavn(string navn) og grunden til, at der står private foran String er fordi jeg ikke vil have man skal kunne se den fra andre klasser. Hvis man vil ændre fornavn bliver man altså nød til, at kalde metoden nytnavn som er public og

altså derfor synlig. public er altså punkt 1 i en metodes opbygning, void er punkt 2, nytnavn er punkt 3 og det i paranteserne er punkt 4. Nu hvor vi kan give vores person et navn så lad os også lave en metode som kan sende navnet retur for eftersom vi har gjort fornavn private kan vi ikke få fat i det uden brug af en metode.! En metode til dette ville kunne se ud som følgende public String hentnavn() return fornavn; public (punkt1) er stadig public fordi vi gerne vil have metoden er synlig for andre klasser. String er altså her punkt 2. Vi skriver string som retur værdi fordi vi vil sende fornavn tilbage når man kalder metoden og fornavn er, som vi kan se en String. hentnavn er punkt 3 og altså noget man selv bestemmer hvad skal hedde. De 2 tomme () fortæller bare der ikke skal sendes nogen parametre med når man kalder metoden. (parametre står for data/informationer) Angående private metoder så er private mest anvendt til, at støtte andre metoder i samme klasser og er netop af den grund ikke synlige for andre klasser. Jeg er løbet lidt tør for ideer til et godt eksempel på private:( Jeg vil dog alligevel lave et meget latterligt eksempel blot for, at illustrere:) Vi får brug for lidt nyt i vores person klasse. En ny attribut kaldet "alder". Og vi laver to metoder. Den første metode skal hedder fodselsdag(); Den skal man kunne kalde når personen har fodselsdag. Den skal ikke sende noget data retur. Denne metode skal kalde en anden metode, som er private! den anden metode sætter alderen op med 1. Vi kalder vores private metode for nyalder(); public void fodselsdag() nyalder(); nyalder() skal se ud som følgende. private void nyalder() alder = alder + 1;

for ikke at miste overblikket får i her det samlede billede. public class Person private String fornavn; private int alder; public void nytnavn(string navn) public String hentnavn() return fornavn; public void fodselsdag() nyalder(); private void nyalder() alder = alder + 1; Her er nyalder() metoden selvfølgelig total overflødig for man kunne bare nøjes med at skrive alder = alder + 1; i fodselsdag, men det blot for at illustrere man stadig kan ændre værdien i sin attribut via. en private metode, men den kan ikke tilgås direkte fra andre. Det kan altså kun ske indirekte via. public metoder. Som fodselsdag. Lad os gøre det lidt interessant. Vi må lige lave det så man skal indtaste et navn og en alder når man opretter en person og det gøres i konstruktøren. så vores

skal ændres til public Person(String navn, int enalder) alder = enalder; her tager man de parametre der bliver sendt med når objektet skal oprettes og gemmer deres værdier i de rigtige attributter. Fældes for konstruktøren og metoder er, at de navne man giver sine attributter mellem parenteserne gerne må hedde præcis det samme som de øverste attributter i klassen! Man må altså gerne skrive public Person(String fornavn, int alder) De vil nemlig blive betragtet som local variabler. Dvs de bliver oprettet når metoden kaldes og forsvinder igen når alt koden i metoden er kørt. Problemet er bare det svært at se forskel på hvilke attributter der hører til metoden og hvilke der hører til klassen. Den simpleste måde at sikre sig man få fat i klassens attributer er ved at skrive this foran. Så skulle det gøres på følgende måde. public Person(String fornavn, int alder) this.fornavn = fornavn; this.alder = alder; så this.fornavn og this.alder er altså de øverste attributter i klassen. Nu er vores Person klasse faktisk færdig og der kan oprettes objekter af den! Du kan teste det ved lige at lave en lille main klasse som denne. public class Main public static void main(string[] args) Person enkopiafperson1 = new Person("Hans", 23); Person enkopiafperson2 = new Person("Tine", 22); Nu har du lavet to objekter af vores klasse(2 kopirer) Prøv nu at kalde de forskellige metoder der er i klassen! Hvis du anvender Jbuilder eller Jdeveloper kan du gøre følgende. skrive

enkopiafperson1. altså med punktum efter så kommer der en lille boks/menu frem. Her er alle metoder i klassen person præsenteret. Lig mærke til at nyalder() metoden ikke er med i listen. Den er jo private:) Men de andre.. vores public metoder er med! Disse fodselsdag() hentnavn() nytnavn(string navn) De er skrevet med fed... alt det der er skrevet med tynd vil jeg ikke gå ind i. Kort fortalt er det metoder som er arvet fra klassen Objekt. En klasse alle klasser stammer fra. Altså også dem vi laver:) Prøv at gå tilbage i vores person klasse og ændre private String fornavn; til String fornavn; prøv så at skrive enkopiafperson1. og du vil se at "fornavn" kommer med i listen. Og det er det vi gerne vil undgå:) Det er derfor vi laver metoder til, at hente, ændre eller slette fornavn. Alt skal helst foregå via. metoder! Håber du fik noget ud af at læse dette:) God programmeringslyst! Ps. Problemer eller spørgsmål undervejs? Spørg endelig løs! Tak til simonvalter... fejlen er rettet... den var lille men en fejl;) sådan er det at skrive i E's lille tekstvindue:o) Kommentar af simonvalter d. 04. feb 2005 1 Udemærket. Jeg ville også gerne have set alle 4 slags visibility for metoder og brugen af javabeans konventionen ved navngivning af nogle metoder har sine fordele. Kommentar af medions d. 01. feb 2005 2 En rigtig god gennemgang! - flot skrevet og det hele! - det er der helt sikkert mange der vil kunne gøre gavn af! Glæder mig til at se flere artikler fra dig! //>Rune Kommentar af visualdeveloper d. 01. nov 2005 3 jeg synes også at det er en godt artikel... bare der dog var nogle flere af disse slags artikler på eksperten... bare skriv løs kalp :P

Kommentar af alister_crowley d. 01. feb 2005 4 lovely :) specielt "Punkt 2" har jeg manglet forklaring på længe. Danske forklaringer på nettet, er en absolut mangelvare (specielt ved java). Kommentar af schwarz84 d. 22. jun 2005 5 normalt bruger man hhv getnavn(string navn) og setnavn(string navn) til at tilgå og ændre variablen navn, pyt. Derudover er indentering en dyd, også i små eksempler. Det gør koden mere læselig og når man skal lære fra sig er det en god ting. I dit sidste eksempel skal String[] være med stort i main-metoden. Det compiler ikke med lille. Ellers en god artikel. Kommentar af califfo d. 20. dec 2005 6 Guld værd. Andet kan jeg ikke sige. Jeg vil dog give "schwarz84" ret i at indentering er en dyd. Det tog lige et øjeblik at finde ud af hvor de forskellige klammer hørte til. Jeg er også meget enig i at det ville hjælpe med flere af den slags artikler for alle os grønne udviklere.