Du har sikkert hørt udtrykket objekt i en programmeringskontekst før. Men hvad betyder det egentlig? Lad os starte med at se på nogle virkelige objekter, som penne, bøger, smartphones, computere osv.
hvert objekt kommer i forskellige former og former, men du kan klassificere forskellige versioner af det samme objekt i en kategori eller gruppe. Det er derfor, du kan gå til en møbelbutik og genkende forskellige ting som “stole”, selvom de ser meget forskellige ud fra hinanden.
du genkender alle disse forskellige objekter som værende en del af den samme gruppe eller type. Du bemærker fællestræk mellem forskellige objekter, indsamle oplysninger, og skabe en mental repræsentation for en given kategori af objekter.
for eksempel er der forskellige slags bøger derude, men de har alle en tendens til at have en titel, en forfatter, et omslag, sider osv. Med andre ord har individuelle bøger alle lignende attributter, der giver dig mulighed for at klassificere dem i dit sind som en del af kategorien “bog.”
denne mentale liste over attributter, vi lige har beskrevet for en bog, fungerer som en slags plan for den objekt. I programmering kaldes det en klasse. Når du opretter en klasse, kan du komme med ethvert brugerdefineret navn, hvorfor de kaldes en navngivet type. Som du kan se, giver de dig også mulighed for at gruppere mange detaljer sammen, hvilket også er grunden til, at de kan kaldes komplekse typer. På den anden side har de enkle typer, du allerede er bekendt med, som int
eller double
Navne, der er foruddefineret af programmeringssproget og ikke kan ændres.
hvordan kommer vi op med klassenavne?
i lighed med navngivningsvariabler skal klassenavne være beskrivende og stavet ud (husk, undgå forkortelser!). En nøgleforskel er, at i stedet for at bruge standard camelCase, skal det første bogstav også være kapital som MarvelousCreature
og ikke marvelousCreature
.
Designklasser
for at se, hvordan man designer en klasse, lad os fortsætte med bogeksemplet. Under, vi har identificeret en prøve af oplysninger, der kunne beskrive en given bog:
-
Titel
-
forfatter
-
antal sider
-
udgiver
disse er attributter for enhver bog i det virkelige liv. I forbindelse med klasser kaldes disse attributter felter i Java. Felterne i en klasse er simpelthen et fancy navn for noget, du allerede er bekendt med: variabler!
nu har du teorien, så lad os sætte dette skriftligt!
for at erklære en klasse i Java skal du bruge et nøgleord class
efterfulgt af et brugerdefineret navn. Derefter afsluttes det med krøllede seler ({}
), der vil omfavne hele indholdet. Dette inkluderer den fulde liste over egenskaber:
class Book {// functionality of the class}
lad os nu tilføje felter som defineret tidligere:
class Book { String title; String author; int numberOfPages; String publisher="OC";}
bemærk, hvordan de første tre ikke har værdier, men den sidste gør det? Hvis du er en udgiver, der ønsker at katalogisere dine bøger, ved du, at udgiverværdien altid vil være den samme, uanset hvilken bog du producerer. Bogtitlerne, forfatterne og sidetallene ændres dog afhængigt af den pågældende bog.
Hvis du går tilbage til det originale eksempel på en online boghandel, vil klassen dog se mere sådan ud:
class Book { String title; String author; int numberOfPages; String publisher;}
da du har bøger fra mange forskellige udgivere, kan du ikke indsætte en standardværdi for dem alle. Så her skal du definere feltet og sætte en værdi senere!
brug af klasser
Du har fået en helt ny type – Book
Kurt – sorteret ud! Hvad kan du gøre med det? Når alt kommer til alt er klasser mere abstrakte eller konceptuelle. Klassefelter er som en skabelon i en online boghandel: uanset hvilken bog du leder efter, vises de samme oplysninger (titel, forfatter, antal sider osv.).
men når du søger, skriver du ikke bare “bog”, ikke? Det er ikke nyttigt! Du har brug for en bestemt forekomst af en bog, siger Alice i Eventyrland. Du leder efter et faktisk objekt, du kan bladre igennem og læse. Det er det samme i computerprogrammering.
for at arbejde med en klasse skal du oprette et konkret objekt i den klasse. Med andre ord har du brug for et bestemt objekt, som en bestemt bog (Alice i Eventyrland). Den specifikke bog kaldes en forekomst af en klasse! Som navnet antyder, kaldes processen instantiering eller initialisering af et objekt. Til det opretter du en variabel af klassen.
i Java skal hvert felt i det oprettede objekt have en værdi. Disse værdier kan leveres på få måder. Du så en i udgivereksemplet: hard-indstilling af en værdi i klassedefinitionen.
en anden måde er at give en værdi i den erklæring, der skaber klassen. Lad os se på, hvordan man gør det. Her er koden til oprettelse af en bog med værdier, der leveres i det øjeblik objektet oprettes:
som du kan se, er der et par forskellige elementer. Først skal du gøre en regelmæssig Erklæring om en variabel med navnet myBook
og dens type Book
. Husk, hvordan vi sagde, at en klasse er en navngivet kompleks type? Nå, her er beviset! I stedet for int
double
eller string
, vores type er den klasse, vi er kommet op med! nu, her kommer den seje del. Variablen initialiseres med objektoprettelsesudtrykket new Book("Coding is art","Becky James",425);
. Dette udtryk er sammensat afnew
nøgleord efterfulgt af navnet på klassen igen (Book
) og nogle parenteser()
med værdier inde. Som du kan se, indeholder parentesen en specificeret værdi for hvert af de originale felter: title
author
og numberOfPages
. Vi har sørget for at adskille hver enkelt med et komma. Slut til sidst med et halvkolonum ;
. Med det har du oprettet en forekomst af klassebogen!
arbejde med attributter (felter)
Pyha! Det var en masse ordforråd og begreber. Før vi går videre, lad os sammenfatte med et hurtigt diagram:
er det bedre? Bare husk:
-
brug en klasse som skabelon til dine fremtidige objekter. I en klasse skal du definere navnet og typen af nogle variabler. I Java kaldes disse attributter generelt og felter specifikt.
-
for at bruge den seje plan, du har lavet, skal du oprette et objekt ved hjælp af instantieringsprocessen. Dette betyder at erklære en variabel med din klasse som en type og derefter bruge det objektoprettelsesudtryk, du så ovenfor.
-
Når du instantierer et objekt, opretter du værdier for hvert af de felter, du allerede har defineret i din klasse.
-
et objekt kaldes en forekomst af en klasse.
nu er du klar! Du har dit bogobjekt, men sig, at du skifter mening om værdien af dine variabler. Hvordan får du adgang til de felter, der er knyttet til dit skinnende nye objekt?
en almindelig måde at få adgang til felter på mange programmeringssprog er at bruge det, der kaldes en dot-notation. Det betyder, at du skal skrive navnet på en forekomst eller et objekt efterfulgt af et attributnavn af interesse, adskilt af en prik: instanceVariableName.attributeName
.
myBook.title = "Coding is Art";myBook.author = "Becky James";myBook.numberOfPages = myBook.numberOfPages + 10;
nu Kan du indstille ændre værdien af felter i dit objekt! Forestil dig, at du har tilføjet ti sider, fordi du har glemt at tilføje indekset for bogen. Du kan enten skrive det nye nummer direkte eller tilføje ti sider til den eksisterende værdi som i den tredje linje. Dette er ret praktisk, når du foretager små ændringer.
prøv det selv
https://api.next.tech/api/v1/publishable_key/2A9CAA3419124E3E8C3F5AFCE5306292?content_id=2871d3da-5053-4373-a813-46b6fcf8118c
Resume
i dette kapitel har du lært fundamentals of objects:
-
en klasse er en plan for et objekt.
-
en variabel i en klasse kaldes en forekomst af en klasse eller et objekt.
-
en klasse giver dig mulighed for at oprette komplekse typer ved at gruppere dens attributter ved at definere felter.
-
for at oprette et objekt skal du erklære en variabel i en klasse og instantiere den.
-
punktnotationen giver adgang til felter.