Kan jeg bli programvareutvikler?
Marine prinsipp sier: hvis du finner fysisk egnet mann eller kvinne, kan du gjøre ham eller henne til en unik fighter, forutsatt at de har riktig trening og utdanning. Programmering er akkurat den samme ferdigheten som å spille gitar, svømme eller sykle. Folk er ikke født syklister. Når jeg ser vennene mine, som jobber dobbelt så hardt som meg og får fire ganger mindre penger, starter jeg følgende samtale: — Vil du jobbe som programmerer? Du er veldig smart. Kanskje du rett og slett ikke er på plass?Hvorfor programvareutvikling?
Før vi begynner å lære en person programmering, bør vi finne ut hva det gir ham eller henne.1 Enkel og interessant jobb.
Programvareingeniør er en enkel og interessant jobb. Den har stort rom for kreativitet. Jeg elsker det. Først ble jeg gal ved tanken på at jeg gjør det jeg liker og får betalt for det. Men så ble jeg vant til det etter hvert.2 Det er godt betalt.
Jeg liker rett og slett å se vennene mine kjøpe seg biler og hus på 5 års jobb.3 Fleksible timer.
En streng arbeidsplan er en ekkel ting. Enhver person som noen gang har vært i trafikkork i rushtiden eller fått bøter for å være 5 minutter forsinket kan bekrefte det. Og hva med å kunne komme på jobb kl 11 og reise kl 17? For de fleste programmerere er det en vanlig tidsplan. Bare gjør arbeidet ditt, og ingen vil si et kryssord. Du kan til og med jobbe hjemme i de fleste selskapene. Du kan alltid komme til en rimelig avtale med din arbeidsgiver.4 Profesjonell vekst.
I de fleste bedrifter må du klatre på karrierestigen for å få god betaling. En programvareutvikler må bare være en programvareutvikler. Du trenger ikke å omkvalifisere deg fra utvikler til leder eller prøve å ta en ledende posisjon. Alt du trenger å gjøre er å vokse profesjonelt. Utviklere som har 5 til 10 års erfaring får kongelig betalt.5 Høy internasjonal mobilitet.
Det er tre høyest betalte yrker i verden: en advokat, en lege og en programvareutvikler. Det er en reell utfordring for advokater som jobber i utlandet: forskjellige lover, rettspraksis osv. En lege må lære språket, andre medisinske standarder og bestå eksamener. En utvikler trenger ikke å lære noe mer. Samme språk. Samme standarder. For de fleste ganger er til og med klienter de samme.Hvorfor Java?
De totalt tre følgende faktorene fikk meg til å omskolere folk for Java-utviklere.1. Java — er et av de enkleste språkene for læring.
En person som nettopp har fullført skolen er i stand til å lære det i løpet av 3 til 6 måneder, avhengig av grunnkunnskapen og antall timer som er lagt ned i studiet.2. Høy etterspørsel på arbeidsmarkedet.
Du kan få jobb uten forutgående erfaring. Bedrifter ansetter praktikanter ivrig og fortsetter å utdanne dem.3. Høyeste lønn i feltet.
En av de høyeste. Dette er spesielt viktig for juniorutviklere.Programmering er en ferdighet
Du kan ikke lese en bok og bli dataprogrammerer. Du trenger minst 500 timers trening. Akkurat som boksing. Du kan ikke bare se kamper og bli profesjonell. Du må trene i årevis. (Det er derfor CodeGym har så mange praktiske oppgaver). Alle tilbud om å lære deg programmering på 10 timer er identiske med tilbud om å lære deg å bokse på 10 timer. Og så kaste deg i en boksering! Ikke gjør det. Noen ganger når en nybegynner spør på forumet hvordan han kan bli programvareutvikler, får han beskjed om å finne opp oppgaver for seg selv og gjøre dem. Det vil ikke fungere.Saken er at en person ikke kan gjøre en oppgave utover hans kunnskap. Enten vet du noe, eller så vet du ikke. Bare en person som er godt kjent med emnet er i stand til å lage et sekvensielt sett for deg, som hver vil lære deg nye ting og ikke vil ta uker å løse. Det var det jeg gjorde i CodeGym.Ny nyskapende undervisningsmetode
CodeGym-utdanning er laget på en annen måte enn høyskoleutdanning. Du vil merke det ganske snart. Det er mye mer effektivt. Studiene dine på høgskolen var sannsynligvis slik: lange forelesninger og øving for å finne det du har lært. Ved å følge denne tilnærmingen forbedrer du kunnskapen din, ikke ferdighetene. For å være ærlig er ferdighetene du ervervet på denne måten praktisk talt ingenting verdt. Jeg har en annen tilnærming. Jeg mener at en person bør stille spørsmål først, og først deretter få svar på dem. Et svar før et spørsmål har ingen verdi. Mine forelesninger er svar på spørsmålene dine. Så først gir jeg deg praktiske oppgaver som er vanskelige å løse med din nåværende kunnskap. Disse oppgavene reiser spørsmål og så får du mine svar som er kunnskap og forelesninger. Jeg presenterer ny kunnskap for deg i tre stadier:-
Introduksjon (minimum teori og noen få praktiske oppgaver)
-
Hovedblokkkunnskap (Du bør forstå emnet fullt ut)
-
Detaljer og nyanser (jeg fyller hull her)
Nivå 5
1 Elly snakker om klasser
- Hei, Amigo! - Hei, Elly! – I dag vil jeg forklare deg hva klassene er. - Forklaring # 1. Jeg starter med en analogi. Alle ting i universet vårt er laget av atomer. De kan være av forskjellige typer: hydrogen, oksygen, jern, uran, ... Ved å kombinere atomer kan man lage forskjellige ting eller gjenstander. – Det samme gjelder Java-universet. Her består programmer av objekter av forskjellige typer (hvor klasse er en type): Heltall, String, Fil, Objekt, … Ved å kombinere objekter kan du lage ulike webtjenester eller programmer. – Ulike atomer har ulik indre struktur. De inneholder en rekke elektroner, protoner og nøytroner. - Ulike klasser (objekttyper i Java) har også forskjellig intern struktur. De inneholder ulike variabler og metoder. – Ja, jeg har en generell idé om atomstrukturen. Jeg er en robot, er jeg ikke? – La oss se på programmet som en helhet: objektene er som byggeklosser som utgjør programmet. Klasser er typer av disse blokkene. Blokker av forskjellige typer er objekter av forskjellige klasser. - Jeg fikk det på en måte. - Forklaring # 2. Vi lager en ny klasse når vi trenger en ny type objekt. Innenfor denne klassen beskriver vi ønsket oppførsel til objekter. – Vel, jeg har forstått noe, men jeg er ikke sikker på dette. – Med tanke på intern struktur består klassen av klassemetoder som gjør noe og av klassevariabler der metoder lagrer delte data. – Enkelt sagt er klassen et sett med metoder? – Ganske mye mer spesifikt er klassen en gruppe metoder som fungerer sammen og variabler i hvilke metoder som lagrer ulike verdier å dele. - Ja. For å lage en ny klasse, må vi skrive disse metodene ... - Jepp. Vi må også bestemme hvilke variabler som deles av ulike metoder, og deretter ta ut variabler fra en metode til klassen: gjør om metodevariabler til klassevariabler. - Klasser opprettes etter følgende mønster: 1 Programmereren bestemmer hvilke andre objekter han trenger. 2 Programmereren deler disse objektene inn i forskjellige typer avhengig av hva de gjør. 3 Programmereren skriver en egen klasse for hver type. 4 I klassen erklærer han de nødvendige metodene og variablene. 5Kommandoer må skrives i hver metode for at metoden gjør det programmereren vil at den skal gjøre. 6 Klassen er klar, nå kan du lage objektene. - Rått! Det er et interessant opplegg. Jeg skal huske det. – Du må lære det utenat, det kommer til nytte. Programmeringstilnærming, der programmet er delt inn i objekter, kalles objektorientert programmering ( OOP ). – Java er et klassisk eksempel på OOP-tilnærming, fordi i Java er alt objekter. - Å lære Java består av to hovedoppgaver: lære å skrive egne klasser og lære å bruke andres klasser. I dag starter vi med de enkleste tingene. Du lærer å skrive enkle klasser og, selvfølgelig, lage objektene deres. Objekter kalles ofte forekomster av klassene. Dette er synonymer, uansett er riktig. - Har det. – For å oppsummere kan jeg si at klassen er et miniprogram: et sett med data og funksjoner som gjør noe med disse dataene. Et viktig trekk ved klasser er muligheten til å lage forekomster av disse klassene (objektene). - For å lage et klasseobjekt må du skrive inn koden «nytt klassenavn()» . - Et klasseobjekt har to interessante trekk: - For det første. Hvert klasseobjekt lagrer sin egen kopi av klassevariablene.Så hvis variablene x, y er deklarert i klassen og 10 objekter av denne klassen opprettes, så har hvert objekt sine egne variabler. Å endre variabler for et objekt påvirker ikke variabler til det andre objektet. - For det andre. Når et nytt objekt er opprettet, kan ulike parametere overføres til det. Dette er såkalte «oppstartsverdier». Det er nesten som å gi et navn ved fødselen. Mange objekter kan ikke opprettes uten å bestå slike parametere. - Jeg forstår litt. Og hva sa du om klassevariablene? - Hvert objekt har sin kopi av dataene (klassevariabler).2 Risha snakker om pakker
- Hei, Amigo! Nå forteller jeg deg om pakkene. - Filer på datamaskinen er gruppert i mapper. Klasser i Java (hver klasse er i en egen fil) er gruppert etter pakker som er mapper på en plate. Dette er ikke noe nytt. Men det er to bemerkninger. - For det første er «et unikt fullt klassenavn» «pakkenavnet» + «klassenavnet» . Eksempler: - Det fulle klassenavnet er alltid unikt! - Det er veldig vanskelig å skrive et langt navn, for eksempel java.util.ArrayList , hver gang. Derfor kan du i koden din bruke korte navn på de andre klassene. Men for det må du bruke litt magi. - Hvilken magi? - Du kan bruke setningen «import java.util.ArrayList;» - I begynnelsen av klassen, umiddelbart etter at pakken er deklarert, må du spesifisere hele navnet på ArrayList- klassen som brukes i koden din. La oss si at du bruker java.util.ArrayList, sun.generic.ArrayList og com.oracle.ArrayList klasser i koden din. Du kan spesifisere en av dem i import (f.eks. sun.generic.ArrayList;) og bruke dets korte navn. Det gjelder kun én klasse. – Hvorfor er dette så komplekst? Kan det være klasser med identiske navn? – Ja, i ulike pakker kan det være klasser med samme navn. Men vi kan ikke importere to klasser med samme navn til klassen vår, så vi må bruke et fullt navn på en av dem. - Her er en annen analogi. Du har Bill i teamet ditt og det er ikke noe problem med kommunikasjon, for alle vet hvem det er. Men hvis det var tre regninger, ville du måtte bruke deres fullstendige unike navn for å skille mellom dem. - For det andre er det bedre å legge klasser inn i pakker og ikke i src- rotmappen . Det er ingen problemer når det er få klasser, men det er veldig lett å bli forvirret når det er mange av dem. Opprett derfor alltid klasser kun i pakker. Regelen i Java er å gi klasser og pakker selvforklarende navn. Mange bedrifter produserer bibliotekene sine (klassesett) og, for å unngå forvirring, navngir pakker av disse klassene etter selskapet/nettstedet:3 Kim viser videoopplæringer
- Hei, Amigo! Her er et par videoveiledninger, hvordan du lager klasser og pakker:4 Elly, objektskaping, objektreferanser
– Så, vi har lært timene sist. I dag vil jeg fortelle deg hvordan du lager objekter. Det er veldig enkelt: skriv nøkkelordet ny og klassenavnet for objektet vi vil lage: - Men jeg har hørt det før. - Jeg vet det, men hør. – Når et nytt objekt opprettes, kan ulike parametere sendes i klammer. Jeg skal forklare det litt senere i dag. La oss vurdere klassen Katt: - Hva er disse getterne og setterne ? - Variabler som ikke er tilgjengelige fra andre klasser er vanlig praksis i Java. Normalt har variabler som er deklarert i en klasse, modifikatoren private . - For å gi tilgang til privat variabel, bør du opprette to metoder: getog sett . Målet med metoden get er å returnere gjeldende verdi av variabelen til en som har kalt den. Målet med metodesettet er å sette en ny verdi. – Og hva er vitsen? - Hvis vi ikke vil at noen skal endre verdiene til objektvariablene våre, kan vi bare skrive no method set , eller gjøre det privat . Du kan også legge til ekstra datasjekk til denne metoden. Hvis den nye godkjente verdien er ugyldig, må du ikke endre noe. - Det er interessant. – Siden det kan være mange variabler i klassen, får og setter navnene på metoderinkluderer vanligvis navnet på en variabel de jobber med. - Hvis en variabel heter fullName , bør metodene hete getFullName og setFullName . Og så videre på samme måte som det. - Har det! Totalt sett er det en forståelig tilnærming. – Her er et par eksempler på hvordan du kan jobbe med et nyopprettet objekt:5 Diego, Oppgaver for å lage egne klasser og objekter
- Hei, Amigo! Her er noen oppgaver for å lage klasser og objekter:Oppgaver | |
---|---|
1 | Lag en klassekatt Lag en klassekatt. En katt må ha navnet sitt (navn, streng), alder (alder, int), vekt (vekt, int) og styrke (styrke, int). |
2 | Implementer metodekamp Implementer metoden boolsk kamp(Cat anotherCat): implementer en kampmekanisme avhengig av kattens vekt, alder og styrke. Gjør opp en avhengighet selv. Metoden bør avgjøre om den nåværende katten (objektet hvis kampmetode ble kalt) eller en annenKatt vant kampen, dvs. returnere sant hvis nåværende katt vant og usant, hvis den ikke vant. Følgende betingelse må være oppfylt:
|
3 | Gettere og settere for klassen Hund < Lag en klassehund. En hund må ha et navn - Stringnavn og alder - int alder. Lag gettere og settere for alle variablene i hundeklassen. |
4 | Lag tre objekter av typen Cat Lag tre objekter av typen Cat i hovedmetoden og fyll dem med data. Bruk klassen Cat til den første oppgaven. Ikke lag klassen Cat. |
5 | Hold tre to-kamper mellom katter Lag tre katter ved å bruke klassen Cat. Hold tre parvise kamper mellom katter. Ikke lag klassen Cat. For kampen, bruk metoden boolean fight(Cat anotherCat). Vis resultatet av hver kamp. |
6 Risha snakker om en objektinitialisering
– Jeg vil fortelle deg om objektinitialiseringen. Når et objekt er opprettet, er det nødvendig å tilordne oppstartsdata til dets variabler , for å unngå en situasjon når du prøver å få tilgang til et objekt, og det har ingen data som kreves for å fungere ordentlig. - La oss vurdere et objekt av typen Fil. Den minste nødvendige informasjonen for filen er navnet. En fil uten navn er tull. - Anta at du skriver din egen versjon av filklassen (for eksempel MyFileClass) for å jobbe med filer. Hvilken informasjon er nødvendig for hvert objekt i denne klassen? - Navnet på filen som dette objektet skal fungere med? - Det er riktig. Det er derfor vi legger til metoden initialize() til klassen vår. Det vil se slik ut: - Vi har lagt til metodeninitialisere , for å kunne jobbe med et objekt - kall dets metoder. Dette kan gjøres umiddelbart etter at metoden initialisering er kalt. Hvis du ikke kan jobbe med et objekt, heter det invalid , ellers er det gyldig . Hovedmålet med initialiseringsmetoden - er å sende alle nødvendige data til objektet for å gjøre det gyldig. - Har det! – La oss nå komplisere oppgaven. Eller rettere sagt forenkle. Avhengig av hvordan du ser på det. Tenk deg at for en annen programmerer som vil bruke klassen vår, er det lettere å gi ikke hele filnavnet, men en katalog og et kort filnavn. Vi kan implementere denne funksjonaliteten ved å bruke en annen metode for initialisering ( Java gjør det mulig å lage flere metoder med identiske navn). Da vil klassen vår se slik ut: - Dessuten er det ofte nødvendig å lage en midlertidig filkopi ved siden av den gjeldende. – Kan vi lage en metode for denne saken? - Jada, ta en titt på dette: - Så jeg kan lage så mange av disse metodene jeg vil? – Innenfor rimelighetens grenser, selvfølgelig. Men faktisk så mange du vil. – Og når er det nødvendig å kalle metoden initialize? - Umiddelbart etter at objektet er opprettet, for å gjøre det om til et gyldig: - Og hva er denne metoden getFolder()? - Du kan se fra navnet at denne metoden er å returnere en streng som inneholder navnet på mappen der filen vår ligger. Men vi skrev ikke implementeringen her, det er bare for å vise.7 Diego, Objektinitieringsoppgaver
- Hei, Amigo! Jeg kjeder meg uten leksjonene våre. Her er noen initialiseringsoppgaver for objekter:Oppgaver | |
---|---|
1 | Opprett en klassevenn Opprett en klassevenn med tre initialiseringsprogrammer (tre metoder initialiseres): - Navn - Navn, alder - Navn, alder, kjønn |
2 | Lag en klassekatt Lag en klassekatt med fem initialiseringsprogrammer: - Navn - Navn, vekt, alder - Navn, alder (standardvekt) - Vekt, farge, (navn, adresse og alder er ukjent, det er en bakgatekatt) - Vekt, farge, adresse (det er en annens huskatt) Initialisatorens oppgave er å gjøre et objekt gyldig. For eksempel, hvis vekten er ukjent, må du spesifisere en gjennomsnittsvekt. En katt kan ikke ha noen vekt i det hele tatt, likeså alder. Men det kan ikke ha noe navn (null). Det samme gjelder adressen - kan være null. |
3 | Opprett en klassehund Lag en klassehund med tre initialiseringer: - Navn - Navn, høyde - Navn, høyde, farge |
4 | Lag en klassesirkel Lag en klassesirkel med tre initialiseringer: - centerX, centerY, radius - centerX, centerY, radius, width - centerX, centerY, radius, width, color |
5 | Lag et klasserektangel Lag et klasserektangel. Dataene vil være topp, venstre, bredde og høyde. Skriv for det så mye initialisering (...) metoder som mulig Eksempler: - 4 parametere bør settes: venstre, topp, bredde, høyde - bredde/høyde er ikke satt (begge lik 0) - høyde er ikke satt (lik med bredde), lag en firkant - lag en kopi av et annet rektangel (det sendes i parameterne) |
8 Elly snakker om konstruktører
– Det er på tide å fortelle deg om konstruktører. Det er veldig enkelt: programmerere fant opp en stenografi for oppretting og initialisering av objekter: - Men jeg har akkurat forstått disse initialisatorene... - Ikke bli opprørt. Ta en nærmere titt. Å bruke konstruktører er mer praktisk og plassbesparende. - Ja, det ser mye bedre ut. Men det er et spørsmål: Jeg vet hvordan man skriver en initialiseringsmetode i klassen, men hvordan skal jeg skrive en konstruktør i klassen? - Se først på et enkelt eksempel: - Det er veldig enkelt å deklarere konstruktøren i klassen. Konstruktøren er som initialiseringsmetoden, men det er to forskjeller:- Navnet på konstruktørmetoden er det samme som klassenavnet (i stedet for initialize ).
- Konstruktørmetoden har ingen returtype (ingen type er spesifisert i det hele tatt).
9 Diego, Konstruktøroppgaver
- Du har fått hvile, antar jeg. Fint. Her er noen oppgaver for å lage konstruktører:Oppgaver | |
---|---|
1 | Lag en klassevenn Lag en klassevenn med tre konstruktører: - Navn - Navn, alder - Navn, alder, kjønn |
2 | Lag en klassekatt Lag en klassekatt med fem konstruktører: - Navn, - Navn, vekt, alder - Navn, alder (standardvekt) - Vekt, farge, (navn, adresse og alder ukjent. Det er en bakgatekatt) - Vekt, farge, adresse (det er en annens huskatt) Initialisatorens oppgave er å gjøre et objekt gyldig. For eksempel, hvis vekten er ukjent, må du spesifisere en gjennomsnittsvekt. En katt kan ikke ha noen vekt i det hele tatt, likeså alder. Men det kan ikke ha noe navn (null). Det samme gjelder adressen - kan være null. |
3 | Lag en klassehund Lag en klassehund med tre konstruktører: - Navn - Navn, høyde - Navn, høyde, farge |
4 | Lag en klassesirkel Lag en klassesirkel med tre konstruktører: - centerX, centerY, radius - centerX, centerY, radius, width - centerX, centerY, radius, width, color |
5 | Lag et klasserektangel Lag et klasserektangel. Dataene vil være topp, venstre, bredde og høyde. Lag så mange konstruktører som mulig for det: Eksempler: - 4 parametere er satt: venstre, topp, bredde, høyde - bredde/høyde er ikke satt (begge lik 0) - høyde er ikke satt (lik bredde), lag en firkant - lag en kopi av et annet rektangel (det sendes i parametrene) |
10 professor, klasser og konstruktører
- Det er meg igjen. Forelesningene våre er rett og slett flotte. Jeg vil ikke gi deg linker til kjedelige forelesninger. Her er en link til gode ting! - Er du fortsatt her? Gå raskt, les, så må jeg gå til laboratoriet. CodeGym Forelesning 5 Diskusjon11 Julio
- Hei, Amigo! Jeg er litt trett. La oss hvile litt, og så starte leksjonen. Jeg har funnet en ny episode:12 John Squirrels
- Hei, soldat! - God morgen, sir! - Jeg har noen fantastiske nyheter til deg. Her er oppgaver for å styrke ferdighetene dine. Gjør det hver dag, og du vil forbedre ferdighetene dine raskt. Oppgaver er spesielt designet for å gjøre i Intellij IDEA.Ytterligere oppgaver å gjøre i Intellij Idea | |
---|---|
1 | 1. Tre klasser 1. Lag klasse Katt og Hund i analogi med klassen And. 2. Tenk på hva toString-metoden skal returnere i klassene Cat og Dog. 3. I hovedmetoden oppretter du to objekter i hver klasse og viser dem. 4. Duck-klasseobjektene opprettes og vises. |
2 | Mann og kvinne 1. Lag offentlige statiske klasser Mann og kvinne innenfor klassen Løsning. 2. Klasser må ha felt: navn(streng), alder(int), adresse(streng). 3. Lag konstruktører for å sende alle mulige parametere til. 4. Bruk konstruktøren til å lage to objekter av hver klasse med alle dataene. 5. Vis objektene i format [navn + " " + alder + " " + adresse]. |
3 | 3. Lag offentlige statiske klasser Hund og Katt. Legg til tre felt til hver klasse etter eget valg. Lag objekter for tegneseriefigurene Tom og Jerry, så mye du husker. Eksempel: Mouse jerryMouse = new Mouse(“Jerry”, 12 (høyde, cm), 5 (halelengde, cm)) |
4 | 4. Vis gjeldende dato Vis gjeldende dato på skjermen i en form som ligner «21 02 2014». |
5 | 5. Les tall fra tastaturet og beregn totalen Les tall fra tastaturet og beregn totalsummen til brukeren skriver inn ordet «totalt». Vis totalen på skjermen. |
Bonusoppgaver | |
---|---|
1 | 1. Programmet kompilerer og kjører ikke. Fiks det. Oppgave: Programmet skal lese to tall fra tastaturet og vise totalt. |
2 | 2. Legg til ny funksjonalitet til programmet. Gammel oppgave: legg til en ny funksjon som leser fra tastaturet to tall og viser deres minimum. Ny oppgave: legg til en ny funksjon som leser fra tastaturet fem tall og viser deres minimum. |
3 | 3. Lære og praktisere algoritme. Oppgave: Skriv et program som 1. leser fra konsollnummeret N som er større enn null 2. deretter leser N tall fra konsollen 3. viser maksimum av innlagte N tall. |
GO TO FULL VERSION