‫En in deze video gaan we kijken naar enkele zeer belangrijke interfaces die je moet begrijpen
‫als je een meer geavanceerde, scherpe ontwikkelaar begint te worden.
‫En dat is zowel de AI-opsombare interface als de AI-enumerator-interface.
‫OK, dus je moet interfaces begrijpen voordat je deze video bekijkt, omdat anders sommige concepten
‫mogelijk niet logisch voor je zijn.
‫Dus ik raad echt aan om ook de interfacevideo te bekijken die we te bieden hebben.
‫OK, dus de AI-opsombare interface is de beste interface voor veel syncytiële verzamelingen en het is zijn taak om een
‫manier te bieden om door een verzameling te itereren.
‫Dus dit is waarom we voor elk smeermiddel een lijst of een woordenboek kunnen gebruiken, omdat
‫ze erven van de ontelbare interface van de ontelbare interface en eenvoudig Engels.
‫Wanneer een collectieklasse de inaugurele interface implementeert, wordt deze verantwoordelijk en kunnen we
‫elk element erin afzonderlijk tellen.
‫Er zijn dus twee verschillende versies van de AI-opsombare interface.
‫Een daarvan is dat werkt voor generieke collecties waar je deze AI-opsombare haakjes openen, haakjes
‫sluiten en dan de AI-opsombare interface voor niet-generieke collecties hebt.
‫OK, dus je moet ook begrijpen wat generieke en niet-generieke collecties zijn.
‫Ze hebben bepaalde voor- en nadelen, maar daar heb ik ook een video voor.
‫Ik hoop dat je het hebt bekeken voordat je deze video hebt bekeken, want anders is het een beetje ingewikkeld.
‫Oké, dus deze twee die we hier hebben, laten we daar eens naar kijken.
‫Aangezien de generieke collecties zijn geïntroduceerd na de niet-generieke collecties, is het aan te raden om de
‫generieke collecties te gebruiken.
‫Ze zijn dus eigenlijk een verbeterde versie, om zo te zeggen.
‫Dus als je een nieuw project aan het maken bent, is het aan te raden om de generieke versie
‫te gebruiken, omdat en ik opsombaar zijn voor niet-generieke collecties, boksen en boksen moet worden toegepast of uitgevoerd, wat in
‫feite de conversie van soorten objecten is.
‫En we zullen later uitleggen hoe je de AI Enumerable T-interface of de generieke collecties-interface gebruikt.
‫OK, we gaan niet in op de niet-generieke collecties-interface omdat het niet wordt aanbevolen
‫vanwege boksen en unboxen, wat gewoon minder efficiënt is.
‫Laten we nu eens kijken naar het verschil tussen de AI-opsomming en de AI-enumerator.
‫Die heb je misschien al eens gehoord.
‫Dus de AI-opsombare interface bevat één methode die u moet implementeren bij het implementeren van deze
‫interface.
‫En dat gaan we later doen in ons specifieke voorbeeld hier.
‫Dus het is iets logischer.
‫Dus de Get enumerator-methode is degene die u moet implementeren en het retourneert een AI-enumerator-object.
‫OK, dus deze methode die je moet implementeren wanneer je een AI-enumerable voor je klasse wilt
‫gebruiken of wat je wilt implementeren voor je klasse, je moet deze get enumerator-methode hebben, die vervolgens
‫een AI-enumerator retourneert.
‫Dus de AI-teller.
‫Biedt de mogelijkheid om de verzameling te herhalen door een huidige eigenschap bloot te leggen die verwijst naar het
‫object waar we ons momenteel in de verzameling bevinden.
‫OK, dit is een stuk ingewikkelder dan het zal zijn als we dit in ons specifieke voorbeeld uitvoeren.
‫OK, dus we gaan een voorbeeld bouwen, waarbij we volledig begrijpen wat dit allemaal betekent.
‫Dit is dus alleen om u voor te bereiden op wat u kunt verwachten.
‫Oké, laten we beginnen.
‫Eindelijk weg van al deze theorie.
‫Laten we eens in de praktijk kijken.
‫Dus laten we deze kleine klasse met de naam Dog maken en ik ga het in hetzelfde bestand plaatsen om het simpel te
‫houden.
‫Dus we hebben deze klasse genaamd Dog met een naam en we hebben deze boolean genaamd is geen IDOC.
‫Dus we zullen in principe controleren of de hond ondeugend is of niet.
‫En op basis daarvan gaan we hem lekkers geven.
‫Oké, dus als hij geen ondeugende hond is, krijg je minder lekkers dan wanneer hij een brave jongen of een brave hond is.
‫OK, dus de constructor hier stelt in feite gewoon die twee waarden in.
‫Dus wanneer we een hondenobject maken, geven we het een naam en een boolean, of het nu de hond is of niet, jij bent
‫het niet.
‫En dan hebben we deze cadeau-traktatiemethode en dit zal in feite gewoon die hond uitprinten.
‫Dus voor iedereen die de hond behandelt, zal hij zeggen: oké, dus als hij een goede hond is, krijg je
‫traktaties en dat krijg je twee keer.
‫En als hij een stoute hond is of een stoute hond, dan zal hij maar één keer bewegen omdat hij minder lekkers krijgt.
‫OK, dus nu hebben we deze klasse hond en we kunnen nu doorgaan met het maken van hondenobjecten, dus laten we deze andere
‫klasse hebben.
‫Laten we aannemen dat we een andere klasse hebben die honden in een lijst zal gebruiken.
‫OK, dus we hebben deze hondenopvangklasse.
‫Dus deze hondenopvangklasse zal een lijst met honden hebben.
‫Dus daarom moeten we ervoor zorgen dat we dit hebben met behulp van generieke systeemverzamelingen, omdat lijst
‫een generieke verzameling is.
‫OK, dus hier bovenaan zul je zien dat je dit nu hebt met generieke systeemverzamelingen.
‫OK, dus nu we dit hondenasiel hebben en we deze lijst met honden in de constructeur van dit hondenasiel
‫hebben, is het enige dat we gaan doen om deze hondenlijst te initialiseren met een stel honden.
‫Dus we hebben de Casper-hond of de hond Casper.
‫Hij is geen ondeugende hond, maar Siff is een ondeugende hond of real is niet ondeugend en Pixel is ook niet ondeugend.
‫Dus vraag me niet hoe we aan deze namen komen, maar dat is eigenlijk hoe we die honden gaan
‫noemen.
‫Je zou deze hele applicatie natuurlijk een stuk ingewikkelder kunnen maken.
‫Maar ons idee is eigenlijk om deze lijst met honden te gebruiken om door het hondenasiel te bladeren, om in principe door het
‫hondenasiel te gaan, en op basis van of een hond braaf is of niet, of een stoute hond of niet, gaan
‫we naar geef hem een of twee traktaties.
‫Dus laten we nu naar onze hoofdmethode gaan, want dat is waar ons startpunt van onze applicatie is.
‫En laten we op dit punt doorgaan en hier een hondenopvangcentrum creëren.
‫Oke.
‫Dus we hebben dit hondenasiel genaamd Shelter, en het wordt een nieuw hondenasiel.
‫Dus we initialiseren het ook meteen zodat we dit asielobject kunnen gebruiken omdat het asielobject een
‫lijst met honden zal bevatten.
‫Rechts.
‫Dus wat we nu willen doen, is dat we de lijst willen doorlopen en controleren of we ze iets lekkers willen geven of
‫niet.
‫Dus laten we voor elk jaar een dubbele tik maken om het voor ons voor te bereiden.
‫Dus wat is het dat we gaan doormaken?
‫Nou, we gaan door een hond.
‫En we gaan het hond noemen, dus elk item op de lijst zal een hond zijn en dan is
‫de collectie waar we doorheen willen gaan in feite het asiel.
‫OK, dus nu hebben we een klein probleem, als we er eenmaal over zweven, zeggen we dat we je naam van verzameling of array
‫zien om doorheen te itereren, de shelter is.
‫Maar de voor elke instructie kan niet werken op variabelen van het
‫type hondenopvang omdat hondenopvang geen openbare instantie of extensiedefinitie bevat voor get enumerator.
‫OK, dus daar hebben we deze get-enumerator.
‫Dus wat betekent dat?
‫Welnu, dit betekent dat we de interface die ik hier opsom voor onze hondenopvang moeten implementeren, omdat deze hondenopvang een lijst
‫heeft die we willen doorlopen.
‫Rechts.
‫Want als je ernaar kijkt, asiel, nou ja, ons hondenasiel, dat is het asiel waar we doorheen willen itereren.
‫En om het itereerbaar te maken, moeten we het enumerable hier implementeren.
‫En wat voor soort objecten willen we opsommen?
‫In ons geval zullen het de honden zijn.
‫Dus we willen door de honden in het hondenasiel kunnen gaan, want, nou, we hebben deze lijst
‫met honden en het is hier geïnitialiseerd in de constructor van het hondenasiel.
‫En we willen ervoor zorgen dat we ze gewoon allemaal kunnen doornemen en iets met de honden kunnen
‫doen, zoals ze aaien of in ons geval iets lekkers geven.
‫Dus zodra je dit implementeert en je gaat hier naar boven, verdwijnt de fout.
‫Dus ineens is het goed, want, nou ja, ons asiel, dat een hondenasiel is, volgt nu de
‫instructies die ons zojuist zijn gegeven dat het een aantal jaar moet implementeren.
‫Dus dit is de algemene opsomming omdat we deze hond hier hebben, juist, omdat het niet
‫deze is, het is degene met het type dat we eraan geven.
‫Maar nu we onze robot eenmaal hebben, zien we dat we nog een foutmelding krijgen.
‫Er staat dat hondenopvang geen interface-lid implementeert. I enumerable dog get enumerator en de ontelbare get enumerator,
‫zodat we ze daar handmatig kunnen plaatsen.
‫Maar het mooie van het gebruik van een I. D. is dat de ID veel werk voor
‫ons kan doen, dus je kunt klikken op potentiële oplossingen weergeven en vervolgens klikken op alle leden expliciet implementeren en het zal dan de naamruimte
‫van de collectie voor ons toevoegen en het zorgt voor het toevoegen van die twee methoden voor wij of die twee leden.
‫Dus zodra we hierop klikken, zie je dat deze fout zal verdwijnen.
‫En als we verder naar beneden scrollen, zul je zien dat we nu een I-enumerator
‫van tijdhond en een niet-generieke I-enumeratorverzameling retourneren.
‫Dus nu hebben we het niet geïmplementeerd.
‫Dat is waarom we dit hebben gegooid, je hebt hier geen uitzondering geïmplementeerd.
‫Dat moeten we hier dus veranderen.
‫We kunnen nu implementeren wat er moet gebeuren met de arget enumerator-methode zodra deze is aangeroepen, dus om het
‫te repareren, wat we hier gaan zeggen, is gewoon terugkeren.
‫Honden, onze honden krijgen niet zomaar een enumerator.
‫En dat zal de implementatie zijn omdat onze hondenopvang nu de opsombare interface implementeert en onze lijst
‫hier is in feite, hey, als je erover zweeft, een lijst is een generieke lijst.
‫OK, en nu kunnen we deze kleine honden nemen en kunnen we de teller krijgen voor elke iteratie die onze voor
‫elke twee zal doorlopen.
‫Dus in principe zal het terugkeren naar individuele honden.
‫En wat we nu kunnen doen, is dat we de hond in volgorde kunnen gebruiken voor elke loopier.
‫Dus dat betekent in feite dat we nu door kunnen gaan en controleren of de hond geen Nodi is, dus geen hond, dat
‫is Mordy.
‫Als dat het geval is, betekent dat in feite dat als de hond niet ondeugend is, we de methode traktatie
‫geven gaan noemen en we hem twee traktaties gaan geven.
‫En anders, als hij ondeugend was omdat we geen traktaties kunnen geven, we houden gewoon te veel van praten,
‫we gaan ze gewoon één traktatie geven, oké, zoals zo.
‫En op dit moment kunnen we onze applicatie niet uitvoeren.
‫En we zullen zien, zei Casper, Wolf, twee keer omdat hij een goede hond is, snuiven is een ondeugende
‫hond, dus hij krijgt maar één traktatie en hij zegt, Wolf, als Oreo het twee keer doet en Pixel zegt ook twee keer verplaatst.
‫Oke.
‫En dat is eigenlijk hoe je je klas de instructies kunt laten volgen of implementeren en I enumerable, zodat je
‫door een lijst kunt lopen met behulp van de for elke lus, zoals we die hier hebben.
‫OKE.
‫Nu vraag je je misschien af, waarom implementeren we niet om de enumerator te krijgen met het oog opsombaar,
‫degene die niet generiek is?
‫Dat komt omdat we geen niet-generiek voorbeeld gebruiken.
‫En ons hondenasiel is ook niet algemener, maar je moet het gewoon implementeren wanneer je de eye enumerable-interface
‫gebruikt, want anders krijgen we hier weer een waarschuwing als je het weggooit.
‫Je ziet dat hier eigenlijk een pijl was, dus we moeten ervoor zorgen dat we deze methode daar ook hebben.
‫Oké, dus dat was het voor deze video en de volgende video, we gaan naar een ander voorbeeld
‫kijken waar we gebruik gaan maken van het oog, ontelbaar zelfs meer.
‫Oké, dit was dus maar een kleine introductie.
‫Ik weet dat dit onderwerp nogal complex en ingewikkeld is, maar we gaan er wat meer van profiteren.
‫En nu, tussen haakjes, nog een korte, hier een samenvatting.
‫Wanneer is het aan te raden om de eye enumerable interface te gebruiken?
‫Nou, je zou het moeten gebruiken als je verzameling een enorme databasetabel vertegenwoordigt.
‫Dus je wilt niet het hele ding naar het geheugen kopiëren en prestatieproblemen veroorzaken in je applicatie omdat de database
‫enorm kan zijn, toch?
‫Het zou miljoenen en miljoenen inzendingen kunnen hebben.
‫En je wilt niet het hele ding moeten laden om er doorheen te itereren, maar
‫je wilt gewoon zoveel laden als je nodig hebt voor het huidige proces, wat je ook wilt uitvoeren.
‫En wanneer moet je de eye enumerable interface dan niet gebruiken?
‫Welnu, als je de resultaten meteen nodig hebt en je bent mogelijk aan het muteren en de objecten later toe te laten, dan is het
‫in dit geval beter om een array of een lijst te gebruiken.
‫Dus als je later objecten wilt kunnen muteren of toevoegen en je hebt de resultaten niet meteen nodig,
‫gebruik dan een array of lijst of gebruik op een andere manier en ik enumerable omdat het efficiënter zal zijn.
‫Oké, dat was het dan voor deze video.
‫Tot ziens in de volgende.