Begin Processing - de temperatuur Visualizer (3 / 7 stap)

Stap 3: Object Oriented Programming-Primer - klassen en objecten


Functies in een notendop:

Een functie is in wezen een stuk van de code die u meerdere keren kunt hergebruiken. Afbreken van een complexe schets in kleinere functies zorgen voor leesbaarheid (de code is beter leesbaar, omdat alle complexe code krijgt geabstraheerde; makkelijker te debuggen in dit stadium), modulariteit (verandert de code in modulaire stukken, zoals legos), en voorkomt dat de code van het krijgen van droog (droog staat voor Don't Repeat Yourself; herhalende middelen handmatig kopiëren/plakken code meerdere keren).

Hier is de algemene structuur van een functie:

data_type_of_returned_value"'void' als deze methode retourneert nothing"functionName(parameters) {}

de functie-definitie

}

Laten we een functie waarin onze kring, en een andere functie voor de beweging (dat is, jiggling) te implementeren:

float x = 200;

float y = 200;

VOID Setup {}

size(400,400);

Smooth();

}

VOID draw() {}

Background(255);

display (); het aanroepen van een functie

Move(); de tweede functie

}

de functies

VOID display () {}

noStroke();

Fill(140);

Ellipse(x,y,80,80);

}

VOID move() {}

x = x + random(-5,5);

y = y + random(-5,5);

}

Hoewel de code precies hetzelfde doet als voorheen, kijk hoe georganiseerd de draw() lus is nu! Merk op hoe ik "genaamd" of "ingeroepen" de respectieve functies uit binnen de lus draw().

Functies kunnen "parameters" te hebben. Parameters zijn "plaats-houders" voor waarden die u "doorgeven kunt" aan een functie. Na ontvangst van de waarden, kan de functie berekenen ze in overeenstemming met hoe u deze hebt gedefinieerd. Bijvoorbeeld, is hier een functie die uit twee parameters (x en y) haalt, en gebruikt de doorgegeven argumenten om te renderen van deze rare vorm:

VOID drawShape (float x, y float) {}

noStroke();

Fill(140);

Ellipse(x,y,80,80);

Ellipse(x-151,y+2,44,44);

Fill(68,234,66);

rect(x-131,y-5,92,18);

}

Zie afbeelding hierboven (eerste afbeelding).

In de bovenstaande functie, gebruikten we x en y als verwijst naar, en stel de parameters voor alle andere vormen "relatieve" aan x en y. Deze techniek heet "relatieve positionering". Bijvoorbeeld, als referentie x 400, en de x-waarde van sommige vorm 89, dan de positie van die shape ten opzichte van de referentie x is "x-311" (400-89 = 311).

Functies kunnen ook "return" waarden, maar dat is voor een andere dag!

Een Object en de klasse verhaal:

Zoals we hebben gezien een tijdje geleden, brengen functies over een zekere mate van organisatie naar onze code. Gebruik makend van objecten in onze code is echter een veel efficiëntere organisatie strategie.

Een object in wezen met elkaar verbindt gegevens (variabelen) en functionality(functions) van een bepaalde entiteit in een nette pakket. Om objecten te maken, moeten we een blue-print voor het. Dit heet de klasse.

In plaats van het brabbelen over een meer complexe concepten, laten we een klasse voor het genereren van jiggly cirkel objecten te maken:

klasse Circle {}

klassevariabelen (ook wel instantievariabelen)

float x;

float y;

float d;

kleur c;

de constructor van het object

Cirkel (float x, y drijven, zweven d, kleur c) {}

this.x = x;

this.y = y;

this.d = d;

this.c = c;

}

de methoden

VOID display () {}

noStroke();

Fill(c);

Ellipse(this.x,this.y,this.d,this.d);

}

ongeldig jiggle() {}

this.x = this.x + random(-2,2);

this.y = this.y + random(-2,2);

}

}

Dingen op te merken:

  1. Er is dit bizarre ding in de code de "constructor" genoemd. De constructor is de functie die eigenlijk een object, in combinatie met het sleutelwoord "new" (meer hierover in een beetje maakt). De constructor definitie moet code over hoe te bouwen objecten bevatten. De constructor-naam moet hetzelfde zijn als de klassenaam.
  2. het "dit" sleutelwoord wordt gebruikt om naar variabelen de behoort tot de klasse, en alleen de klasse! U kunt zien dat ik dezelfde variabele namen voor de klassevariabelen en de parameters van de constructor gebruikt heb. Met behulp van "deze", toestaan ik verwerking onderscheid maken tussen de twee. Vandaar, "this.x = x" geeft aan: de waarde doorgegeven aan x terwijl u het object in "this.x", de klasse variabele opslaan.
  3. De dezelfde functies die we hebben gezien voordat in de klasse wordt gebruikt. Een functie die is gekoppeld aan een klasse wordt een "methode" genoemd.

Het is een goede gewoonte om te houden van uw klassen in een apart bestand opslaan, zodat uw belangrijkste code ziet er netjes. U kunt dit doen door het creëren van een tweede tabblad op de bewerkingsomgeving. Opmerking, het tabblad de naam moet dezelfde zijn als die van de klasse. (zie afbeelding hierboven; ten derde foto).

Met behulp van de klasse voorwerpen te maken:

objecten declareren

Cirkel c;

Circle d;

VOID Setup {}

size(400,400);

Smooth();

objecten initialiseren

c = nieuwe Circle(200,200,80,color(100));

d = nieuwe Circle(344,355,20,color(62,177,137));

}

VOID draw() {}

Background(255);

met behulp van objecten

c.display();

c.jiggle();

d.display();

d.jiggle();

}

Zie uitkomst boven (tweede foto).

Objecten declareren - terwijl objecten te verklaren, is het gemakkelijker om te overwegen de klasse als een nieuw gegevenstype. Dus, betekent "Cirkel c" declareert u een variabele "c" soort "Circle" (vergelijk met "int c").

Initialiseren van objecten - Zie hoe we de constructor via het sleutelwoord "new" ingeroepen? Aangezien de definitie van de constructor cirkel had parameters, moeten wij argumenten om te initialiseren van het object doorgeven. Deze argumenten zijn toegewezen aan het object variabelen (x, y, c enz.). Daardoor kunnen we de dezelfde klasse gebruiken om objecten te maken met verschillende eigenschappen. In het bovenstaande voorbeeld verschillen cirkels c en d van elkaar in grootte en kleur.

U ziet ook dat de objecten worden geïnitialiseerd op Setup. Dat is logisch, want wij niet de intentie hebben van hetzelfde object over en weer in draw() initialiseren.

Met behulp van objecten - We gebruik maken van de dot "." exploitant tot methoden van het object, zoals hierboven gezien.

Gerelateerde Artikelen

Realtime temperatuursensor en Dashboard

Realtime temperatuursensor en Dashboard

Microcontrollers worden steeds goedkoper, krachtiger en meer flexibel. Nieuwe modules en sensoren blijven maken van de nieuwe use-cases, en het Internet van dingen blijft omhoogschieten.Buiten gewoon verzamelen of gegevens opsporen, wij willen iets d
PHYSIC achter sky lantaarns

PHYSIC achter sky lantaarns

Hallo iedereen,in dit instructable zal ik het beginsel van vlucht luchtballon (bekend als sky lantaarns) uitleggen. Ik had hete lucht ballonnen voor schoolproject, dus ik dacht dat het aan andere mensen zien hoe hete lucht ballonnen werkt geïnteresse
FPGA Tic Tac Toe

FPGA Tic Tac Toe

"Tic Tac Toe? Wat is dat? Ik heb nog nooit gehoord daarvan."-Niemand ooitDoor Ryan Frawley en Derek NguyenDeze gids zal u tonen hoe maak je een werkende Tic Tac Toe game in VHDL op een Nexys 2 FPGA-board. Deze tutorial werd gedaan voor een deel
FPGA-vergrendelingsbeheerproject LED

FPGA-vergrendelingsbeheerproject LED

Voor onze laatste project in Digital Design op Cal Poly, waren wij belast met het maken van een project dat natuurlijke hulpbronnen met behulp van een FPGA (veld programmable gate array) aan boord bewaard.Ons project is een simulatie van een kamer wa
Ugly Drum Smoker - Aumador verticale

Ugly Drum Smoker - Aumador verticale

voor enige tijd die ik wilde maken van een roker en na zoeken op Internet ik precies wat ik nodig had ontdekte, een verticale roker gemaakt van een 55 gallon drum, ook wel "Ugly Drum Smoker" UDS.Blijkbaar is het ontwerp van dit soort rokers is h
Ultrasone afstand Sensor Visualizer W / Processing

Ultrasone afstand Sensor Visualizer W / Processing

Dit project maakt gebruik van verwerken om gegevens uit een ultrasone afstandsmeter op een arduino board en ingang naar variabelen in een schets.Stap 1: Uw hardware instellenu moet:Ultrasone afstandsmeterArduino boarddradendraad verbinden met uw meet
Fish Tank temperatuur realtime Visualizer

Fish Tank temperatuur realtime Visualizer

Hallo Instructables!Ik wilde altijd al een manier om gemakkelijk het controleren van de temperatuur van het water in mijn aquarium.Met behulp van 2-3 LEDs voor laag/normale/hoog temperatuur te saai voor mij, lijkt dus ik besloot om een RGB LED strip
Weerstation Arduino en Processing

Weerstation Arduino en Processing

bouwen van een weerstation thuis of mobiel en grafiek van de gegevens in real time op uw computer. De grafiek kaarten uit windsnelheid, druk, temperatuur, en windrichting voor 10 minuten dan wordt de afbeelding opgeslagen als een JPEG-bestand en opni
Interactieve glijden Visualizer

Interactieve glijden Visualizer

Dit project is een interactieve glijdende visualizer tampon. Het is een instrument dat kan worden gebruikt om te bladeren door middel van tijd of ruimte.Demonstratievideo:Wij gebruikten het visualiseren van een 3-dimensionale cadaver afbeelding set e
LED muziek Visualizer met Zybo bestuur

LED muziek Visualizer met Zybo bestuur

Deze tutorial beschrijft hoe maak je een LED muziek Visualizer met behulp van het Zybo Zynq 7000 ontwikkel bord van Xilinx. De Zybo is vrij ontzagwekkend, want het heeft zowel een FPGA en een bewerker van het wapen op het bord. Vanwege dit, kunnen aa
De 600W Wake-Up Light met temperatuur Logger

De 600W Wake-Up Light met temperatuur Logger

Dit hier is een zeer geavanceerde 24u temperatuur logger, die de temperatuur elke 15 seconden registreert en dan het gemiddelden over 1 min en 12mins. De waarde 12min gemiddeld wordt uitgezet op de tijdlijn op een OLED scherm van 128 x 64. Het gemidd
Digitale vochtigheids- en temperatuur-Monitor

Digitale vochtigheids- en temperatuur-Monitor

Hallo iedereenZorgen voor goede indoor vochtigheid heeft belangrijke huid, allergeen en andere voordelen voor de gezondheid door remming van de groei van bacteriën, virussen, schimmels en enz. Deze digitale temperatuur en vochtigheid Monitor kunt u c
ATTiny85 Mono temperatuur Monitor

ATTiny85 Mono temperatuur Monitor

Ik graag doen elektronica als een hobby en een mooie werkruimte die ik heb van een afgedankte PC gemaakt hebben. Het bevat een solderen houder en soldeerbout (rechter bovenhoek van de afbeelding van de werkruimte). Het gebeurt dat ik heb een handige
Programmering ESP8266 ESP-12E NodeMCU v1.0 met Arduino IDE in draadloze temperatuur logger

Programmering ESP8266 ESP-12E NodeMCU v1.0 met Arduino IDE in draadloze temperatuur logger

Terug in eind 2014 en begin 2015, uw echt kwamdeze handige WiFi Chip ESP8266 (de ESP-01) en moeten vechten onder de inconsistente documentatie uit verschillende bronnen. Vooralsnog uitloper gedocumenteerd hij zijn frustraties (bevindingen) als een in