Introduction au Java pour les débutants | Worn Off Keys | Skillshare

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Introduction au Java pour les débutants

teacher avatar Worn Off Keys

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Introduction

      0:33

    • 2.

      Installation Installing

      2:23

    • 3.

      Monde de bonjour

      5:46

    • 4.

      Commentaires

      1:20

    • 5.

      Variables

      6:57

    • 6.

      Entrée d'utilisateur

      3:59

    • 7.

      Opérateurs arithmétiques

      4:41

    • 8.

      Si autre

      7:28

    • 9.

      Déclarations de commutation

      3:25

    • 10.

      Opérateurs de comparaison

      2:02

    • 11.

      Opérateur logique

      3:20

    • 12.

      Tandis que des boucles

      2:29

    • 13.

      Faire pendant que des boucles

      2:28

    • 14.

      Pour les boucles

      1:56

    • 15.

      Pause et poursuite

      1:45

    • 16.

      Projet de calculatrice

      7:01

    • 17.

      Méthodes

      5:26

    • 18.

      Surcharge de la méthode

      1:35

    • 19.

      Portée

      2:18

    • 20.

      Opérateur terrestre

      2:08

    • 21.

      Tableaux

      4:43

    • 22.

      Pour chaque boucles

      2:03

    • 23.

      Tableaux multidimensionnels

      5:07

    • 24.

      Varargs

      2:38

    • 25.

      Constantes et coulée

      4:11

    • 26.

      Méthodes à chaînes communes

      3:45

    • 27.

      Séquences d'évasion

      2:18

    • 28.

      La classe de mathématiques et les numéros aléatoires

      3:55

    • 29.

      Variables de type de référence

      8:39

    • 30.

      Bases de la programmation orientée objets

      4:43

    • 31.

      Constructeurs

      3:12

    • 32.

      Le mot-clé et les propriétés "this"

      4:19

    • 33.

      Encapsulation, abstraction, Getters et Setters

      7:07

    • 34.

      Héritage

      3:52

    • 35.

      Polymorphisme

      3:38

    • 36.

      Le mot-clé "statique"

      4:07

    • 37.

      Cours abstraits

      3:20

    • 38.

      Interfaces

      3:21

    • 39.

      Instance de

      1:40

    • 40.

      Enums

      7:23

    • 41.

      Essayez enfin de capturer

      5:36

    • 42.

      Erreurs de lancer

      2:15

    • 43.

      Listes et listes de tableaux

      6:25

    • 44.

      Cartes et cartes de hachage

      4:14

    • 45.

      Construire un fichier de bocal

      3:07

    • 46.

      Intro du projet de cuirassé

      1:13

    • 47.

      Fichiers et coordonnées

      2:33

    • 48.

      Navires

      8:09

    • 49.

      Joueur

      10:50

    • 50.

      Finir le jeu

      22:53

    • 51.

      Conclusion

      0:11

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

1 811

apprenants

15

projets

À propos de ce cours

Vous vous battez pour apprendre de la programmation avec Java ?

Quand j'ai commencé à apprendre le Java en 2011, c'était un cauchemar. Tant de nouveaux concepts et idées pour m'entourer de la tête.

C'est pourquoi j'ai fait ce cours : Pour créer un système simple étape par étape pour apprendre Java FAST.

Grâce à de multiples projets et à des explications claires, ce cours vous aidera à maîtriser les bases Java même si vous n'avez jamais programmé auparavant.

Alors, qu'attendez-vous ? COMMENÇONS !

Rencontrez votre enseignant·e

Teacher Profile Image

Worn Off Keys

Enseignant·e

Hey! My name is Alexzander Flores and I'm a self-taught software developer. I started programming in 2008 and since then it has been a major part of my life.

I frequently used courses to learn a lot of what I know, so I'm now creating my own courses to help others in a similar way.

Voir le profil complet

Level: Beginner

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Introduction: Java est l'un des langages de programmation les plus faciles à apprendre, ce qui le rend parfait pour les débutants. Dans ce cours, je vais vous guider étape par étape dans la programmation et Java. À la fin de ce cours, vous allez créer de vrais programmes en utilisant Java. Et vous aurez une solide compréhension des bases et des fondamentaux de la programmation. Programmation de four en Java depuis 2011. Et j'utilise même Java pour créer mes propres serveurs de jeux startup dans ce et 14, j'ai gagné un revenu à temps plein de son projet pendant quelques années avant de le vendre. J'ai donc beaucoup d'expérience dans l'utilisation de Java et j'ai hâte de partager mes connaissances avec vous tout au long de ce cours. 2. Installer IntelliJ: Avant d'apprendre Java, nous avons besoin d'un endroit où nous pouvons réellement écrire et exécuter notre code. C'est ce qu'on appelle un IDE, qui signifie Integrated Development Environment. C'est une façon super chic de dire qu'il s'agit d'un éditeur de texte qui convertira également votre code en un programme réel. La norme industrielle pour les IDE et Java va maintenant s' appeler intelligence. Vous pouvez donc simplement télécharger intelligemment Google. Il s'agit d'un logiciel libre. Allez-y et cliquez sur le lien en haut ici, et assurez-vous de sélectionner Community Edition. Ils sélectionnent également le système d'exploitation approprié sur lequel vous utilisez. Je suis sous Windows, ce qui est par défaut. Je vais donc rester ici sous l'onglet Windows. Je peux ensuite cliquer sur Télécharger. Et votre téléchargement devrait commencer. Et sur la plupart des navigateurs qui devront accepter que vous vouliez télécharger ce fichier. Une fois le téléchargement terminé, vous pouvez cliquer dessus ici. Nous avons ici l'installateur actuel. Il s'agit d'un installateur assez standard. Eh bien, il suffit de cliquer sur Suivant environ 800 fois et vous devriez être prêt à partir. Je vais juste passer en revue et tout garder ici, la valeur par défaut. Ensuite, je vais mettre en pause l' enregistrement pendant que l' installation est en cours. Après la désinstallation, nous pouvons aller l'avant et cliquer sur cette case à cocher ici, puis enfin cliquer sur Terminer. Une fois que vous l'avez ouvert, vous devez être envoyé sur une page similaire à celle-ci. Vous allez vouloir cliquer sur Nouveau projet. Maintenant, sur cette page, vous voulez vous assurer que vous avez sélectionné Java en haut. Il devrait s'agir de la valeur par défaut. Et pour le SDK du projet, nous pouvons choisir la valeur par défaut. Mais si vous ne voyez pas de valeur par défaut, vous pouvez télécharger un JDK. Nous pouvons donc cliquer dessus et vous pouvez sélectionner la version souhaitée. N'importe quelle version devrait le faire. Nous n'allons rien faire. C'est un cours de processus très dépendant de la version. Il suffit de cliquer sur le téléchargement. Maintenant, en supposant que vous ayez déjà un SDK, nous pouvons simplement cliquer sur suivant, puis sur suivant de nouveau. Et enfin, nous pourrons donner un chemin à notre projet et à un nom. Nous pouvons cliquer sur les trois points ici pour parcourir. Je vais sélectionner mon dossier Java ici, et je vais créer un nouveau dossier. Celui-ci s'appellera un espace de travail. Ici, ici. Je vais juste le sélectionner, puis cliquer sur OK. Désormais, le nom du projet est Workspace par défaut. C'est très bien. Je vais aller de l'avant et cliquer sur Terminer. Maintenant, intelligent est enfin ouvert. Sur la gauche, nous avons ce projet que nous pouvons basculer en cliquant sur. Cela va afficher tous les fichiers et dossiers de notre espace de travail. Maintenant, partout ailleurs dans ce panneau géant, c'est ici que notre code sera affiché. Mais nous n'avons aucun code ouvert pour le moment. Mais maintenant que l'intelligence est installée avec succès, nous sommes prêts à commencer à écrire code avec la prochaine vidéo. 3. Bonjour monde: Nous sommes maintenant prêts à travailler enfin sur notre tout premier programme Java. Et il est courant d'imprimer simplement le texte bonjour world à l'écran comme tout premier programme, peu importe la langue ou l' apprentissage qui va continuer ici, naviguez vers le dossier source. Et ici, nous devons créer un nouveau dossier à l'intérieur. Vous pouvez cliquer avec le bouton droit de la souris, accéder à Nouveau et sélectionner le package. Un paquet n'est essentiellement qu'un dossier. Et un programmeur Java utilise des paquets, un moyen d'organiser tous vos fichiers de code. Vous pouvez avoir plusieurs fichiers de code à l'intérieur des packages et vous pouvez avoir plusieurs paquets dans votre projet. Pour l'instant, nous allons travailler avec un seul paquet. Allez-y et cliquez ici avec le bouton gauche. Nous devons maintenant entrer un nom de paquet, ce qui doit être unique. Une pratique courante consiste maintenant à utiliser un domaine inversé. Par exemple, com.google.com.YouTube. Mais évidemment, ce ne devrait pas être l'un des domaines les plus populaires, mais plutôt le vôtre. Et si nous ne possédons pas de domaine, ne vous inquiétez pas, vous n'en avez pas besoin. Techniquement, vous pouvez entrer tout ce que vous voulez. Mais par exemple, pour suivre les conventions de dénomination standard, faisons quelque chose comme com dot alex dot Flores ou autre chose comme ça. Évidemment, cela a mon nom et vous pouvez utiliser votre propre nom si vous le souhaitez ou quelque chose de complètement inventé. Je vais nommer ce paquet le domaine exact que je possède. Ainsi, par exemple, com dot usé des clés. Maintenant, si j'appuie sur Entrée, nous voyons que ce dossier a été créé ici. Maintenant, ici, je peux créer mon propre fichier, afin que je puisse cliquer avec le bouton droit de la souris, accéder à une nouvelle classe Java. Et ici, nous avons quelques options différentes. Nous allons nous en tenir à une classe standard. Je vais expliquer la différence entre tous ces éléments dans les prochaines vidéos. Le nom de classe que je vais appeler ce Hello World avec un H majuscule et un W majuscule et aucun espace. Il est très important qu'aucun de ces fichiers n'ait d' espace dans son nom. Une fois que vous avez appuyé sur Entrée, quelques morceaux de code seront écrits ici. Si vous développez ce dossier, vous voyez maintenant le Hello World Class ici. Maintenant, les détails de ce que font chacun de ces éléments seront abordés dans une prochaine vidéo. Pour l'instant, nous allons simplement ajouter à ce code existant. Maintenant, si vous cliquez sur cette accolade qui s'ouvre ici, vous pouvez appuyer sur Entrée et vous pouvez dire que nous avons automatiquement des onglets. Et une fois maintenant tabulation, c'est très important dans n'importe quel langage de programmation, car cela rend votre code beaucoup plus facile à lire. Et l'avantage de cela devient beaucoup plus évident plus tard une fois que nous avons des fichiers beaucoup plus volumineux. Mais pour l'instant, nous n'avons pas à nous soucier des gros fichiers. Notre objectif en ce moment est simplement d' imprimer le texte Hello World à l'écran. Je vais maintenant écrire un code. Allez-y et suivez-moi et lancez ce parcours. Nous allons comprendre ce que fait chaque partie de ce code. Mais la plupart de ces choses ne vont pas être expliquées pour le moment. Pour commencer, je peux dire que les parenthèses publiques, statiques, vides , principales, puis les parenthèses et les parenthèses finales doivent être générées automatiquement. Et ensuite, nous pouvons mettre un espace puis une accolade bouclée, et semblable aux parenthèses et à la fin de l'accolade bouclée sera automatiquement générée. Maintenant, entre les deux accolades, si vous appuyez sur Entrée ou C, il y avait également une fois de plus la fin à onglets. Nous devons revenir entre parenthèses et taper chaîne avec un espace S. majuscule. Ensuite, un crochet carré et un crochet de fin seront ajoutés. Et puis on peut taper des arcs. Maintenant, nous venons d'écrire beaucoup de code et la plupart vous semble très déroutant. Ne vous inquiétez pas du tout à ce sujet. Tant que votre code ressemble à ceci et qu'il n'y a pas de lignes rouges nulle part, vous êtes prêt à partir. Et mes lignes rouges tordues, j'ai fait quelque chose comme ça. Ici, nous voyons cette ligne rouge tortillante juste ici. C'est une intelligence pour nous faire savoir qu'il y a une erreur dans notre code. On le survole. Il va dire que c'est une parenthèse de fin comme prévu. Je peux donc en ajouter un ici, et cette erreur disparaît. Encore une fois, si vous êtes confus en ce moment, ne vous inquiétez pas, tout sera expliqué au fur et à mesure que nous continuerons tout au long du cours. La prochaine étape sera expliquée maintenant, notre objectif est d'imprimer quelque chose sur la console. Nous pouvons le faire en tapant un système avec un LN majuscule S, dot out, point print. Nous pouvons ajouter une parenthèse et une parenthèse finale sera automatiquement ajoutée. Ici, nous pouvons ajouter un guillemet double et similaire à tout le reste, et la fin du double guillemet sera ajoutée. Nous avons maintenant une erreur à la fin ici. Si je survole ça, on s'attend à un point-virgule. Je peux en ajouter un et ici, semblable à une période avec une phrase anglaise est un point-virgule termine une déclaration ou une phrase Java. À la fin de la plupart des lignes, vous allez ajouter un point-virgule. Et vous avez peut-être remarqué que nous n'avons pas point-virgule ici, sur la ligne 6 ou sept. La raison en sera expliquée ultérieurement. Mais généralement, la plupart des lignes de code que vous allez écrire devraient comporter un point-virgule à la fin. Maintenant, dans ces guillemets doubles, nous pouvons ajouter le texte que nous voulons. Et comme nous avons imprimé sur la console, par exemple, je peux ajouter Helloworld. Ensuite, je peux aller à Run en haut, parce que cliquez ensuite sur Exécuter ici. Vous pouvez également utiliser un raccourci affiché ici. On a ce pop-up ici. Nous voulions cliquer sur Hello world. Et maintenant, nous voyons qu' il est en train de construire. Maintenant, on peut juste apparaître ici. Je vais aller de l'avant et baisser cette hauteur juste pour avoir plus de place pour travailler avec le code. Mais nous voyons le texte Hello world, et que le processus s'est terminé avec un code de sortie de 0. Le 0 d'un cadre signifie essentiellement que tout s'est bien passé et qu'il n' y a pas eu de problèmes. Maintenant, si nous le voulions, nous pouvons ajouter différents points d'exclamation dans la chaîne. Et au lieu de parcourir toutes ces zones déroulantes ici, nous pouvons simplement cliquer sur cette flèche verte en haut à droite. Vous pouvez également appuyer sur Maj plus F2, selon celui que vous préférez. Si je clique dessus, nous voyons maintenant qu'il va reconstruire notre projet. Et nous voyons maintenant Hello World avec des points d'exclamation. Par la suite. Vous avez maintenant terminé votre tout premier programme Java. Je sais que beaucoup de ce code semble très déroutant en ce moment, mais tout sera expliqué fur et à mesure que nous poursuivrons le cours. 4. Commentaires: Lors de la programmation, nous ne pouvons pas simplement écrire tout ce que nous voulons car ce code Java n'est pas valide. Et donc si je les survole, ils vont dire qu'il y aura des erreurs liées à ce code. Mais parfois, vous voudrez peut-être ajouter des notes différentes ou bien être appelé commentaires dans votre code. Cela vous aidera, vous ou vos collègues mieux comprendre ce qui se passe dans le code. Par exemple, je peux faire deux barres obliques avant ici, puis je peux dire imprimer bonjour world sur la console. Dans cet exemple précis, nous ne voulons probablement pas ajouter de commentaire pour cette ligne car la ligne est de toute façon assez explicite. Mais c'est ainsi que vous ajoutez correctement un commentaire. Cela n'aurait aucun effet sur le programme ou sur ce qui est imprimé sur la console. C'est juste là comme une note pour les autres programmeurs et vous-même. Maintenant que nous avançons dans ce cours, vous allez voir ce qui devrait et ne devrait pas avoir un commentaire. Encore une fois, une ligne comme celle-ci est très explicite, donc nous n'avons pas besoin d' ajouter de commentaires. Maintenant, alternativement, nous pouvons ajouter des commentaires sur plusieurs lignes en faisant une étoile oblique. Et puis une barre oblique d' étoile de fin et intelligente fait la fin pour nous. Ici, je peux dire qu'il s'agit d'un commentaire. Tout ce texte ici est grisé parce qu'il ne s'agit pas d'un code technique, mais plutôt d'un commentaire. 5. Variables: Nous allons maintenant parler de l'un des concepts les plus importants en matière de programmation. Et c'est là le concept de variables. Comme si vous considérez une variable comme un conteneur qui contient une sorte de valeur. La RAM ou la mémoire de votre ordinateur est essentiellement un tas d'étagères qui contiennent ces conteneurs. Maintenant, chaque conteneur aura un nom et la valeur à l'intérieur peut être lue ou modifiée à tout moment. Par exemple, créons un entier qui n'est essentiellement qu'un nombre entier. Je peux dire dans l'espace. Et maintenant, nous devons nommer notre variable. Cela devrait être descriptif. Nous ne devrions pas avoir de variables nommées a ou X ou des éléments de ce genre qui ne sont pas très descriptifs. Donc, dans ce cas, je veux que cela maintienne mon âge actuel. Je vais donc taper l'âge. Je nomme donc cet âge variable. Vous pouvez le nommer essentiellement tout ce que vous voulez. Mais il y a certaines règles que je vais examiner plus tard dans cette vidéo. Ensuite, nous allons ajouter un signe égal. Et après le signe égal, nous pouvons ajouter n'importe quel nombre. Dans ce cas, il sera 28. Et enfin, nous devons ajouter en point-virgule ce qui se passe réellement ici ? Eh bien, l'int va essentiellement dire à Java que nous voulons créer une variable, et cela va contenir un type entier de valeur. Il existe différentes valeurs des variables qui peuvent contenir et nous les couvrirons plus tard dans la vidéo. Maintenant, chaque variable a besoin de son propre nom. Dans ce cas, nous lui donnons le nom d'âge. Ensuite, nous avons un signe égal, qui est techniquement connu sous le nom d'opérateur d'affectation. Cela va prendre la valeur à droite et l' attribuer à la variable de gauche. Et puis, bien sûr, nous avons l'âge et vous pouvez ajouter le numéro que vous voulez ici. Il pourrait être 999, il pourrait être 0, il pourrait être négatif 5 mille. N'importe quel nombre entier fonctionnera. Mais par souci de simplicité, je vais juste ajouter mon âge actuel, qui est de 28 ans. Alors, que pouvons-nous réellement faire avec cette variable ? chose la plus basique que nous puissions faire est probablement de l' imprimer sur la console. Au lieu d'écrire la ligne system.out.print à chaque fois, l' intelligence nous donne un raccourci car il s'agit d'une longue ligne de code à écrire. Je peux donc taper S0 UT pour la sortie du système. Si j'appuie sur Entrée, il générera automatiquement cette ligne de code pour nous. Maintenant, il ne génère pas les guillemets doubles et c'est intentionnel. Si je devais ajouter les guillemets doubles et ensuite l'âge auquel nous exécutons ce programme, nous voyons simplement le mot âge et notre console. Mais ce n'est pas ce que nous voulons. Nous voulons voir la valeur à l'intérieur de la variable d'âge. Nous devons supprimer ces guillemets doubles, sorte qu'ils n'afficheront pas ce qu'on appelle une chaîne. Une chaîne ressemble essentiellement une phrase ou à un ensemble de caractères, quelque chose qui constitue des textes réels. Maintenant, sans les guillemets, il va essayer de référencer la valeur à l'intérieur de la variable d'âge. Dans ce cas, il atteindra le conteneur que j'ai mentionné précédemment, et il retirera la valeur de 28, puis l'enverra au client. Loin de nous lier encore. Nous devrions maintenant en voir 28 dans la console comme nous le faisons ici. C'est un exemple de ce que nous pouvons faire avec les variables. Nous pouvons également réattribuer une valeur. Par exemple, disons que j'ai un anniversaire, je pourrais dire que l'âge est égal à 29 ans avec un point-virgule. Remarquez comment je n'utilise pas l'int ici. Lorsque je fais cela, il y a une erreur. Si je le survole, cela indique que l'âge variable a déjà été défini. Donc, fondamentalement, l'int n'est là que lorsque nous créons la variable. Mais une fois qu'elle a été créée, nous pouvons toujours modifier cette valeur en réaffectant une valeur comme celle-ci. Maintenant, pour le prouver, je peux l' imprimer sur la console. Donc, je pourrais imprimer l'âge. Et si je fais ça, on en voit maintenant 28 et 29300. Un entier n'est donc qu'un nombre entier, mais il existe d'autres types de variables. Par exemple, si je supprime tout cela, je peux maintenant dire que la chaîne avec un nom S majuscule est égale à Alex. Et remarquez à quel point je suis rapide à l'intérieur des guillemets doubles. Si je disais juste Alex ici, on pourrait penser que nous recherchons une variable portant ce nom, mais il n'y en a pas. Donc, pour dire à Java que nous travaillons avec une chaîne de caractères tels qu'une phrase ou un message, un type de texte. Ensuite, nous allons ajouter nos guillemets doubles. Java ne recherchera pas une variable nommée Alex, mais nous traiterons cette variable comme une chaîne de texte. Maintenant, bien sûr, nous pouvons mettre cela sur la console. Je peux imprimer mon nom. Et si je fais ça, on verra Alex dans la console. Mais il existe de nombreux autres types de variables. Par exemple, nous avons un booléen. Boolean Jeff représente une valeur vraie ou fausse. C'est tout ce que ça fait. Par exemple ici, je peux dire que la programmation est vraie. Maintenant, vrai n'est pas entre guillemets car ce n'est techniquement pas une chaîne. True ou faux, qui est la seule autre option pour un booléen, sont techniquement des mots-clés en Java. Nous sommes en mesure de les écrire simplement dans notre code. Par exemple, si c'est vrai, je peux maintenant imprimer en programmation. Maintenant, si je l'exécute, nous devrions voir vrai dans la console. Bien sûr, tout comme les entiers, nous pouvons réaffecter des études de valeurs. Donc je peux dire que la programmation est fausse. Et si je l'exécute, nous allons maintenant voir False dans la console. Maintenant, je vais supprimer cette ligne ici. Et vous remarquerez peut-être comment j'ai nommé sa programmation. J'ai un I minuscule et un P. majuscule Dans les noms de variables, nous ne pouvons pas avoir d'espaces. Ainsi, chaque fois que nous avons plusieurs mots, il est courant d' utiliser quelque chose connu sous le nom de notation CamelCase. La notation camel est lorsqu'un mot est écrit avec la toute première majuscule étant en minuscules. Mais chaque mot après cela a une lettre majuscule au début. Il est donc très facile à lire sans espace. Comparez cela à la notation camel. C'est évidemment beaucoup plus difficile à lire, surtout pour les autres personnes qui ne font que lire votre code et qui ne l'ont pas écrit. Ils ne savent donc pas exactement ce que c'est. D'autres règles impliquent que les variables ne peuvent pas avoir de nom difficile pour le nombre. En règle générale, vous ne devriez pas le faire de toute façon, donc ce n'est pas très descriptif. Mais si, pour une raison quelconque, vous le souhaitez absolument, vous pouvez l'ajouter dans un trait de soulignement pour commencer. Il devient alors un nom de variable valide. fur et à mesure que nous avançons tout au long du cours, vous verrez d'autres exemples de noms de variables afin que nous puissions avoir une meilleure idée de ce qui constitue une bonne convention de dénomination. Passons maintenant à d'autres types de variables. Ensuite, nous avons un caractère similaire à une chaîne, mais il ne représente qu' un seul caractère. Par exemple, je peux dire que la lettre est égale à a. Et ceux-ci utilisent des guillemets simples, pas des guillemets doubles. Si je devais ajouter plusieurs personnages ici, ça ne va pas aimer ça et ça va se plaindre. Encore une fois, ils n'utilisent qu' un seul caractère. Nous avons également un double, qui est similaire à un entier, mais ce sera bien sûr n'importe quel nombre. Il ne faut pas qu'il s'agisse d'un nombre entier. Par exemple, l'âge est égal à 28,5 ans. Ce serait un double valide, mais j'utilise le même nom qu'une variable existante. Je vais donc dire que l'âge est double. Une autre règle de dénomination est que chaque nom doit être unique. Sinon, il ne saurait quelle variable vous référenciez exactement. 6. Entrée utilisateur: présent, nous venons d'imprimer des choses sur la console. Mais que se passe-t-il si nous voulions recevoir les commentaires des utilisateurs qui utilisent votre programme ? Dans ce cas, ce ne serait que nous. Mais que se passe-t-il si nous voulons entrer certains nombres ou noms ou d'autres choses genre et que cela soit réellement compris dans notre programme DAW ? Pour ce faire, il va s'agir de quelques concepts. Il y aura un peu de confusion et sera très hors de portée de cette vidéo ici. Ce sont des concepts qui seront expliqués plus tard dans le cours, mais ils sont beaucoup trop compliqués à expliquer en ce moment. Alors allez-y et codez avec moi et sachez que ceux-ci seront expliqués plus tard. Commençons donc par créer quelque chose connu sous le nom de scanner. C'est ce qui est utilisé pour recevoir des informations dans notre console. Je peux donc dire scanner avec un S majuscule, j'appuie sur Entrée. Nous allons maintenant importer un scanner. C'est quelque chose qui est intégré à Java, mais pour pouvoir l' utiliser dans ce fichier, nous devons importer tout ce code dans ce fichier. C'est ce que fait cette ligne ici. Maintenant que nous avons créé un scanner similaire aux variables que nous avons examinées dans la dernière vidéo. Nous devons donner un nom à cela. Je vais appeler cette entrée. Ensuite, nous pouvons utiliser un opérateur d' affectation ou un signe égal pour attribuer une nouvelle valeur à cela. Maintenant, cela va être quelque chose qui sera expliqué plus en détail plus tard dans le cours. Mais pour l'instant, il suffit d'aller de l'avant et de coder. Ici. Je vais dire un nouveau scanner spatial avec un S majuscule, puis des parenthèses par la suite. Maintenant, je reçois cette erreur ici. Lorsque je survole cela, il est dit que scanner du constructeur ne peut pas résoudre. Encore une fois, le concept de constructeur et la raison pour laquelle cette erreur se produit, il sera abordé dans une prochaine vidéo. Mais pour l'instant, passons à l'intérieur des parenthèses à moins d'ajouter un système avec un S point n majuscule ce qui devrait éliminer l'erreur. Nous sommes maintenant prêts à recevoir des entrées de la console. Commençons par une simple corde. Par exemple, je peux dire que le nom de chaîne est égal au point d'entrée suivant. Et cela va renvoyer une chaîne par défaut. Ensuite, je peux imprimer les noms de la console. Donc OUT et nom. Et veillons à ce que l' utilisateur sache quoi faire. Je peux dire S OUT, puis je peux entrer. Veuillez entrer votre nom. Maintenant, si je lance cela, nous allons voir s' il vous plaît nom antérieur, mais il ne se ferme pas immédiatement comme une donnée et d'autres situations ici attendent en fait que nous saisissons notre nom. Dans ce cas, j'ajouterai un Alex, et si j'appuie sur Entrée, il imprimera Alex. Et c'est là que le processus est terminé. Les textes verts seront ceux que j'ai saisis et le texte blanc proviendra d'un programme Java lui-même. Maintenant, si je refais ça, j'ai ajouté mon nom complet. Par exemple, Alexander Space Flores. Si je fais ça, on ne voit plus qu'Alexander. C'est parce que la prochaine fonction ici va compter chaque personnage jusqu'à un certain espace. Donc, s'il y a un espace, un onglet ou une nouvelle ligne et que des choses de ce genre vont y arriver. Donc ça va juste arrêter de chercher nouveaux personnages et juste retourner ce qu'il a trouvé jusqu'à présent. Si nous voulions obtenir la ligne complète, nous pouvons dire la prochaine ligne. Comme pour les variables, cela va utiliser la notation CamelCase, qui signifie que nous avons un n minuscule car il s'agit de la première lettre du premier mot. Mais la première lettre de tous les autres mots. Par exemple, L va être en majuscules. Si je fais ça, je peux maintenant entrer mon nom complet avec un espace, donc Alexander espace pour nous. Et si j'appuie sur Entrée, nous voyons que la chaîne complète nous a été imprimée. Maintenant, nous n'avons plus qu'à faire des cordes. Par exemple, je peux dire s'il vous plaît entrer votre âge. Ensuite, je peux dire que int age est égal au point d'entrée suivant. Et ici, nous voyons un tas d'autres options. Dans ce cas, nous voulons le prochain int car c'est notre type de variable, qui est un int. Ensuite, je peux utiliser S0 UT. Je pourrais imprimer l'âge sans devis. Et si je fais ça, il va nous demander notre âge. Dans ce cas, je vais entrer 28. Ensuite, il nous en imprimera 28. 7. Opérateurs arithmétiques: Souvent, lorsque nous avons des numéros, nous ne voulons pas simplement les imprimer sur la console. Nous voudrions peut-être ajouter, soustraire, multiplier ou diviser avec ces nombres. Par exemple, je peux dire que le nombre entier est égal à 50. Allons de l'avant et commençons par l' imprimer sur la console. Nous pouvons toujours voir ce qui se passe. Maintenant, je ne vais pas faire ça parce que c'est très évident ce qui se passerait. Mais supposons que nous voulions en ajouter un à ce numéro. Quelques façons différentes de le faire. Par exemple, le nombre est égal au nombre plus un. Maintenant, si je fais ça, tu vas probablement savoir ce qui va être imprimé. Dans ce cas, il sera 51. Nous pouvons ajouter dix ou 100 ou tout autre type de valeur. Ce que nous voulons pour cet intrus. Il existe maintenant un moyen plus court de le faire. Je vais donc utiliser la barre oblique de contrôle pour aller de l'avant et commenter la ligne actuelle. Et puis je vais dire le nombre plus égal à 100. C'est fondamentalement la même chose que ce que nous avons ici, c'est juste un moyen plus court d'ajouter un nombre à une variable. Donc, si je lance ça , on verra 150 dans la console. Nous pouvons faire exactement le même concept lorsqu'il s'agit de soustraire. Au lieu de plus, j'ai moins. Et si je lance ça, on verra 50 négatifs dans la console. Bien sûr, nous avons une multiplication. Donc, si je lance ça, nous voyons ici 5 000 et une division, qui a une barre oblique. Si je fais ça, on verra 0. Maintenant, le 0 ici est parce que nous utilisons des entiers qui sont des nombres entiers. Si je devais changer cet int par un double, qui permet des points décimaux, et je devais exécuter cela. Nous voyons maintenant 0,5. Et bien sûr, tous ces symboles peuvent être utilisés sur cette syntaxe d'origine. Par exemple, on peut dire diviser le tout par 100 fois 100. Tout ce genre de choses fonctionnera toujours. Maintenant, vous vous demandez peut-être pourquoi quelqu'un qui utilise ce type de syntaxe s'il s' agit d'une syntaxe plus courte ? La principale raison d'utiliser ce type de syntaxe ici est que si vous avez plusieurs variables, c'était la seule façon de faire les choses. Par exemple, je peux dire que int numéro deux est égal à dix. Ensuite, je peux dire que le nombre est égal à deux fois 100. Nous ne pouvons pas le faire avec ce type de syntaxe ici, car ce type de syntaxe ne va modifier que la variable mentionnée dans ce cas, c'est-à-dire le nombre. Maintenant, je vais supprimer la plupart des choses et je vais créer un autre entier appelé nombre égal à cinq. Supposons maintenant que nous voulons ajouter ou soustraire une de cette variable avec ce que nous venons de voir, nous pourrions faire un nombre plus égal à un. Si je l'ai couru, bien sûr, c'est une sorte de travail. Nous en verrions six dans la console. Mais augmenter et diminuer un nombre par un est si courant que la plupart des langages de programmation, y compris Java, ont un moyen de le faire, une syntaxe encore plus courte. C'est ce qu'on appelle l'incrémentation et la décrémentation d'une valeur. Je peux donc dire numéro plus, plus. Si je l'enregistre, nous en verrons encore six dans la console. Cela va augmenter le nombre d'un. Nous pourrions également faire le nombre moins moins. Si je l'exécute, nous en verrons quatre dans la console parce que nous soustrayons du numéro d'origine, qui est dans ce cas cinq. Maintenant, les avantages et les inconvénients peuvent continuer soit attribués à la variable, et ils font des choses légèrement différentes. Dans ce cas d'utilisation, si je devais l'exécuter, nous ne verrons aucun changement réel. Et nous allons toujours en voir six dans la console. Mais c'est uniquement à cause de la façon dont notre code est écrit ici. Avoir les avantages avant ou après sera beaucoup plus clair sur la différence. Si j'ajoute les avantages directement sur la variable ici, si j'exécute ce pinceau, il y en aura encore six dans la console. C'est parce que les avantages avant le nom de la variable, vont d' abord incrémenter la variable, puis l'utiliser. utilisant, dans ce cas, nous le transmettons à la fonction de ligne d'impression, l'imprimant essentiellement sur la console. Mais si je devais ajouter des avantages par la suite, cela signifie que nous allons d' abord utiliser la variable , puis l'augmenter. Si je devais exécuter ça, on en verra cinq dans la console. Mais techniquement, dans la mémoire de notre programme, nombre détient toujours la valeur six. Nous ne l'avons simplement pas imprimé. Pour le prouver, je peux l' imprimer à nouveau. Consultez notre numéro d'impression. Et si je fais ça, on en verra 56. Le même concept exact s'applique quand il s'agit de moins, moins. Si je vais courir ça, on en verra cinq, puis quatre. Bien sûr, si je fais moins, moins avant, nous en verrons 44. C'est parce que nous diminuons d'abord le nombre, puis nous l'utilisons. Bien sûr, nous imprimons à nouveau les résultats. Au fur et à mesure que nous avançons vers le cours, vous verrez un certain nombre de façons et d' instances différentes où cela sera utile à utiliser. Surtout quand il s'agit de notre premier projet, qui sera à mi-chemin du cours. 8. Si vous le souhaitez: Nous sommes maintenant sur le point de nous plonger dans un concept très important connu sous le nom de flux de contrôle. Le flux de contrôle est essentiellement l' endroit où nous pouvons contrôler le flux du programme qui aurait deviné. Et cela se fait le plus souvent avec que l'on appelle des instructions IF. En gros, si quelque chose est égal à quelque chose, nous allons exécuter un certain code. Sinon, nous ne pensons peut-être pas à un jeu de tir préféré. Si vous appuyez sur le bouton Reload, il va vérifier si vous avez une Magdalena complète. Pas si vous le faites n'est pas rechargé. Mais si vous n'avez pas de magazine complet, il sera alors rechargé. Commençons par créer une entrée utilisateur, frappant créer un scanner. Je vais appeler cette entrée. Je vais attribuer la valeur du nouveau scanner en système point n. Maintenant que nous avons accès à cet objet d'entrée, nous pouvons lire les entrées de l'utilisateur. Je vais donc dire int nombre égal au point d'entrée suivant int. Maintenant, je vais simplement imprimer ça pour m'assurer que tout fonctionne. Très bien, Mike, et exécutez ça avec Shift et FTN. Ici, il s'attend à ce que je saisisse un numéro. Je vais entrer 50 , puis on en retrouvera 50. Tout fonctionne bien. Mais au lieu de simplement imprimer le numéro, je vais utiliser une déclaration if. La syntaxe d'une instruction if serait une parenthèse if, puis une accolade bouclée et une accolade de fin sur la ligne suivante. Maintenant, à l'intérieur des parenthèses, c'est là que va notre état. Et cette condition va généralement comparer les deux. Merci. Par exemple, je peux dire que le numéro deux est égal à des signes, 52 signes égaux est très important parce qu' un seul signe égal, comme je l'ai déjà mentionné, est un opérateur d'affectation. Cela va prendre la valeur à droite et l' attribuer à la variable de gauche. Mais deux signes égaux constituent une comparaison. Cela va voir si la valeur à gauche, il appelle la valeur à droite. Je vais ajouter un commentaire ici, il dit comparaison. Que se passe-t-il si ces deux choses sont égales ? Eh bien, cela deviendra essentiellement une expression booléenne. Et si vous vous souvenez auparavant, un booléen est égal à vrai ou à faux, aucune autre valeur de Boolean ne peut utiliser une instruction IF et habit conditionnelle comme ceci va essentiellement chercher un booléen. valeur. Hypothétiquement, permettez-moi de commenter cela et permettez-moi d' entrer dans le numéro 50. Dans ce cas, notre éditeur de texte nous donne cet avertissement jaune en le survolant. Il indique que le numéro de condition est égal à 50 est toujours vrai. Maintenant, c'est évidemment le cas parce que notre valeur ici est de 50 et cela ne change jamais. Maintenant, l'important ici est que c'est toujours vrai, est-à-dire une valeur booléenne. C'est donc essentiellement la même chose que de dire si c'est vrai. Maintenant, si c'est le cas , le code à l'intérieur ces accolades sera toujours exécuté. Si c'était faux et que le code à l'intérieur des accolades ne sera jamais exécuté. La condition à l'intérieur des parenthèses doit être une condition réelle. Je vais utiliser Control Z pour revenir en arrière jusqu'à ce que nous recevions réellement l'entrée de l'utilisateur. Et ici, je vais simplement imprimer sur la console en disant que le nombre est 50. Maintenant, je vais me débarrasser de certains de ces commentaires ici, juste pour rendre notre code un peu plus propre. Je vais essayer de nous diriger avec Shift et F2. Et ici, on s'attend à ce que je saisisse un numéro. Si j'entre 50, je vais dire les chiffres 50. Et si je refais ça, j'entre autre chose. Par exemple, 99. Il n'imprimera rien car cette condition est fausse. Par conséquent, le code à l'intérieur ne sera pas exécuté. Mais que se passe-t-il si nous voulions vérifier d'autres numéros ? Will, en théorie, on pourrait simplement ajouter un tas de déclarations si. Par exemple, un nombre exactement égal à 51. Mais que se passe-t-il si nous ne voulons qu' une seule chose soit imprimée sur la console ? Maintenant, chaque fois que nous créons une instruction if, cela va créer quelque chose appelé chaîne d'instructions if. Une chaîne de déclarations if. Cela va contenir jusqu' à trois types d'instructions différents. Nous avons nos déclarations si, nous avons nos déclarations elles-if, et nous avons nos déclarations elles-mêmes. Jetons un coup d'œil à des déclarations d' autres cas. Si je me débarrasse de cette déclaration si ici, je pourrais dire autrement, si le nombre est exactement égal à 51, je peux alors imprimer le nombre est 51. Maintenant, une déclaration « Else-if » doit être directement après une déclaration if. Celles-ci porteront essentiellement sur toutes les déclarations précédentes si et else-if. Et s'ils sont tous faux, alors il va essayer de comparer ces deux valeurs. Dans ce cas, la déclaration IF en ligne 16, il va comparer le numéro 50. Si c'est vrai, nous allons alors exécuter ce code. Et ensuite, nous allons descendre jusqu'ici. Nous n'allons même pas essayer de comparer le nombre de 251 car la déclaration else-if voit que l' énoncé if était vrai. Il constate qu'il est inutile de vérifier les deux valeurs. Mais si nous avons entré un numéro différent, par exemple 51, cette condition est désormais fausse. L'instruction else-if, nous verrons que nous allons ensuite essayer de comparer ces deux valeurs. Dans ce cas, les deux valeurs sont identiques. Donc ce code nous a couru, mais si j'entre 52, rien ici ne sera rampe. Pour le prouver, je peux exécuter notre programme. Je peux entrer 50. Ici, nous voyons les numéros 50, les étrangers le font à nouveau. Je peux entrer un 51, et nous voyons ici le numéro 51. Enfin, je peux l'exécuter et je peux entrer 52 et rien ne se passe. Maintenant, pour chaque chaîne d'instructions IF , par exemple, ici, nous ne pouvons avoir qu' une seule instruction if, mais autant de déclarations autres que nous le voulons. Par exemple, je peux dire autrement que si le nombre est exactement égal à 52, je pourrais alors imprimer le numéro 52. Et pour rendre les choses un peu plus intéressantes, je peux dire que le numéro f est exactement égal à 52. Encore une fois, je n'ai pas pu imprimer test juste pour m'assurer que cette déclaration d'impression est très différente des autres. Donc, si je l'exécute, j' entre 52 dans la console. Nous voyons maintenant que le nombre correspond aux deux, mais nous ne voyons pas de texte. C'est parce que cette condition était vraie ici. Par conséquent, cette déclaration ne va même pas prendre la peine de comparer ces deux valeurs et n' imprimera certainement rien à l' intérieur des accolades. Bien sûr, notre EDI se plaint parce que ces deux choses ne devraient pas être là. Cette déclaration ici ne sera jamais diffusée quoi qu'il en soit. Parce que si le numéro est 52, alors ce code ici à la ligne 21, nous avons couru à la place, car notre condition en ligne 20 sera vraie. Je vais supprimer ça. Et la dernière chose que je voulais vous montrer , c'est l'autre déclaration. Cela doit se trouver à la fin d'une chaîne de déclarations if. s'agit essentiellement que d'un fourre-tout. Si rien d'autre dans la chaîne d'instructions if était vrai, par exemple, je peux imprimer un numéro inconnu et je peux exécuter cela. Et si j'entre dans le 5352, nous savons ce qui va se passer. Mais que se passe-t-il si j'entre 53 ? Il est dit numéro inconnu parce que les trois déclarations si elles sont juste ici ou fausses, donc l' instruction else que nous avons exécutée. Mais si je devais lancer ça et que je veux entrer 52, alors il est dit que le numéro est pour les deux. Et l'instruction else n'est pas exécutée car elle voit ou l' une des précédentes déclarations f ou else-if étaient vraies. Fondamentalement, le programme va passer en revue tous ces éléments et essayer de trouver les premières déclarations vraies et d'ignorer tout le reste. 9. Déclarations de commutation: Dans la dernière vidéo, nous avons regardé les instructions if, mais ce n'est qu'un exemple de flux de contrôle. Un autre exemple est ce que l' on appelle une instruction switch. Maintenant, c'est moins couramment utilisé comme des instructions, mais vous le verrez de temps en temps. Il est donc important de comprendre comment cela fonctionne. Je peux simplement dire changer de parenthèses , puis accolades bouclées par la suite. Maintenant, les parenthèses d'anticorps vont être une valeur, pas nécessairement une condition, mais n'importe quel type de valeur. Par exemple, dans ce cas, un numéro. Maintenant, à l'intérieur, nous allons avoir quelque chose connu sous le nom d'énoncés de cas, qui sont un peu comme des déclarations si. Je peux dire le cas 50 avec un deux-points. Si j'appuie sur Entrée, je pourrais ajouter le nombre 50. Ensuite, je dois ajouter quelque chose appelé « break statement ». Je vais aller de l'avant et faire ça avec Shift F2. Ici, je peux entrer le numéro 50, c'est-à-dire les chiffres 50. Maintenant, si je refais ça, j'entre autre chose. Par exemple, 51. Rien ne va réellement se passer parce qu'il est évident que nous ne gérons 51 nulle part. C'est différent d'une déclaration if et elle avait ses propres cas d'utilisation. En fait, il est le plus couramment utilisé pour mon expérience lors de la comparaison de chaînes, mais vous pouvez l'utiliser au lieu des instructions if si nous le voulions vraiment. Mais il y a d'autres choses à faire. Par exemple, je peux ajouter dans d'autres cas. Donc, dans le cas 51, je peux ajouter. Le numéro est 51 et je peux casser. Maintenant, bien sûr, si je lance ça et que j'ajoute 51, ça dira simplement ça. Mais que se passe-t-il si je veux vérifier deux numéros différents ? Eh bien, je peux aussi dire le cas de 52. Ensuite, la déclaration imprimée indiquera que le numéro est 51 ou 52. Maintenant, si je cours ça, je peux aller de l'avant et entrer en 52. Il est dit que le nombre est 51 ou 52. Bien sûr, nous obtiendrons la même sortie si je saisis le numéro à un. Maintenant, la possibilité de vérifier deux valeurs différentes avec une instruction if sera expliquée dans quelques vidéos du cours. Il est beaucoup plus facile d'expliquer cela avec les instructions de commutateur. C'est pourquoi je le couvre ici. Une chose à garder à l'esprit, c'est que si l'un des cas est vrai, le code continuera à s'exécuter jusqu'à ce qu'une instruction break soit trouvée. Par exemple, je peux changer cela par 52. Ensuite, je peux imprimer le numéro 51 ici. Notez que nous n'avons pas de déclaration de rupture après cette déclaration imprimée ici. C'est ici le seul qui le brise quand nous avons quatre cent cinquante un et cinquante deux. Donc, si je lance cela et que j'hérite de 51, ce qui va se passer, c' est qu'il continuera à exécuter le code jusqu'à ce qu'il trouve une instruction break. Nous voyons que le chiffre est 51. Ça ne se soucie pas qu'il y ait une affaire ici. Il va juste ignorer cela. Et il va courir cette ligne ici, le numéro des deux, et ensuite on va casser. Maintenant, une dernière chose pour les instructions switch sera la valeur par défaut, ce qui se passe généralement à la toute fin. Et c'est un peu comme l' autre énoncé pour les déclarations if. Ici, je peux imprimer un numéro inconnu. Et techniquement, vous n'avez pas besoin d'une instruction break même si beaucoup diront qu'il s'agit d'une syntaxe correcte. Mais le code fonctionne très bien même sans instruction break, car bien sûr, la valeur par défaut devrait être le dernier cas vérification dans votre instruction switch. Si je vais de l'avant et que je lance ça et que je saisis un autre numéro, par exemple 500 négatif. Nous voyons ensuite un numéro inconnu. Les instructions Switch sont assez simples et peuvent être utilisées à la place des instructions if et certains cas d'utilisation. Mais généralement, vous allez simplement utiliser des instructions if. 10. Opérateurs de comparaison: Nous allons maintenant revenir aux déclarations if et jeter un coup d'œil aux opérateurs de comparaison. Il s'agit de différentes façons de comparer deux valeurs. Auparavant, nous devions regarder le signe double égal, qui ne ferait que vérifier la valeur à gauche et la comparer à la valeur de droite. Mais il y a beaucoup d'autres opérateurs que nous pouvons utiliser dans Java ou pratiquement n'importe quel langage de programmation. Par exemple, nous avons un signe plus grand que. Il y avait moins que le signe. Nous avons une valeur supérieure ou égale et inférieure ou égale à. Et nous n'avons pas non plus d'égal à. Aujourd'hui, la plupart d'entre eux sont très explicites. Mais jetons un coup d'œil à quelques exemples. Comme je l'ai dit, si le nombre n' est pas égal à 50, je peux alors imprimer le numéro son pas 50. Et si je fais ça et que j'entre 50, bien sûr, on ne verra rien parce que le nombre est égal à 50. Par conséquent, cette condition ici est fausse. Mais si je refais ça et que je saisis autre chose, par exemple, on voit que le nombre n'est pas 50 car bien sûr, un est la même chose que 50. Essayons maintenant d'autres choses. Par exemple, je peux dire que le nombre est supérieur à 50. Je peux aussi que le nombre est supérieur à 50. Et si je lance ça, je peux maintenant entrer le numéro que je veux, par exemple 900. Et on dira que le nombre est supérieur à 50. Mais si je saisis quelque chose de moins ou d'égal à 50 , rien ne se passera. La partie égale est importante car 50 n'est pas supérieure à 50. C'est égal à cela. Si j' entre 50 ans, rien ne sera imprimé. Si je voulais cette fonctionnalité, je peux dire plus ou égale à 50. Si je fais ça et que j' entre 50, bien sûr, on va voir que le nombre est supérieur à 50. Mais c'est simplement parce que je n'ai pas mis à jour ce texte. Mais l'important ici, c'est que le nombre est maintenant supérieur ou égal à 50. Et bien sûr, moins les opérateurs de panneaux fonctionneront exactement de la même manière. Je suis sûr que vous pouvez imaginer comment cela fonctionnera et nous pouvons les utiliser pour avoir expressions plus compliquées dans nos déclarations if pour ensuite avoir programmes plus complexes et plus significatifs. 11. Opérateur logique: Jetons un coup d'œil aux opérateurs logiques. Voici d'autres moyens d'ajouter des contrôles plus complexes dans nos déclarations if. Par conséquent, quelques exemples de cela seront l'opérateur NOT. Il s'agira également de l'opérateur AND logique. Et l'opérateur OR logique, c' est-à-dire en maintenant la touche Maj enfoncée et en appuyant sur la touche ci-dessus, entrez. L'opérateur NOT va simplement inverser une valeur. L'opérateur AND veillera essentiellement à ce que ce soit à gauche et à droite. L'opérateur or s' assurera que cette chose à gauche ou à droite, ou les deux sont vraies. Jetons un coup d'œil à toutes ces questions avec des exemples. Je peux dire que si le nombre est exactement égal à 50, nombre est exactement égal à 55, je peux alors imprimer 50 ou 55. Et si je fais ça, je peux maintenant entrer 50 et on voit 50 ou 55 refaire ça, entrant 55, on voit la même chose. Et bien sûr, si je lance ça et que je saisis autre chose, par exemple 70, nous ne voyons rien dans la console. Fondamentalement, cela veut voir que le côté gauche de l'opérateur ou du côté droit, ou les deux sont vrais. Et cela peut être évident car il s'agit de l'opérateur OR logique. Laissez-moi aller de l'avant et ajouter ce qu'ils représentent. L' opérateur OR logique va être tel ou tel, l'un ou l'autre. Maintenant, l'opérateur AND aura trop de sens dans ce cas d'utilisation, car la variable numérique ne peut pas contenir un 5055 en même temps. Un meilleur exemple de l'opérateur AND est l'utilisation supérieure et inférieure à. Par exemple, je pourrais dire nombre est supérieur ou égal à 50 et que le nombre est inférieur ou égal à 55. Par conséquent, tous les éléments compris entre 50 et 55 ans devraient être inclus. Je vais changer ça en 5255. Et si je fais ça, je peux maintenant entrer 52. Et nous voyons que c'est vrai. Essentiellement si le nombre est supérieur ou 50 et le nombre est inférieur ou 55 à la totalité de l' instruction if sera vraie. Si l'une de ces deux expressions est fausse , l'instruction if sera fausse. Par exemple, si je l'exécute encore une fois et que j'entre 56, rien ne se passera réellement. Bien que cette partie soit vraie ici, car 56 est supérieure ou égale à 50. C'est faux ici, car pour les six, il n'est pas inférieur ou égal à 55. Et l'opérateur et nécessite à la fois une gauche et une droite pour être vraies. Jetons maintenant un coup d' œil à un opérateur NOT, qui va simplement inverser une expression booléenne avec des instructions if, nous pouvons en fait jumeler certaines conditions ensemble. Par exemple, je peux enrouler parenthèses autour de tout ça. Et si je devais gérer ça, la même chose se produirait. Mais maintenant, nous pouvons utiliser un opérateur NOT ou au préalable. Cette expression entière sera soit vraie, soit fausse, selon que la valeur de nombre est l'opérateur NOT qui va simplement inverser cela. Je vais donc dire que non 5255. Si je fais ça, je pourrais entrer 52. Il ne se passe rien. Mais si je refais ça et que j'entre quelque chose qui ne se situe pas entre 5055, par exemple, tous les 34, nous ne voyons pas 5255. L'opérateur NOT va simplement inverser une expression booléenne. Et tout au long du cours, nous verrons plus de cas d' utilisation l'opérateur non et des deux autres opérateurs. Et à quel point ils peuvent être utiles. 12. Pendant que les boucles: Nous allons maintenant examiner l'exemple le plus simple de boucle. Et c'est un moyen de faire en sorte que certains morceaux de code continuent à s'exécuter encore et encore tant que nous voulons qu'ils s'exécutent. Il existe donc différents types de boucles. Mais dans cette vidéo, nous allons jeter un coup d'œil à la boucle While. On peut donc dire que pendant les parenthèses et ensuite les accolades bouclées. Et dans cette condition, il y aura une expression booléenne. Cela sera vrai ou faux si cette boucle doit continuer à s'exécuter. Par exemple, je peux créer un entier appelé compteur et le définir égal à 0. Je pourrais alors dire que pendant que le compteur est inférieur à dix, je peux ensuite passer à l'intérieur de la boucle while et tout ce qui se trouve à l'intérieur des accolades bouclées sera exécuté tant que cette condition est vraie ici. Actuellement, cela serait connu sous le nom de boucle infinie car le compteur ne change jamais. C'est toujours 0. Donc, le contre-levage et l'étain sont toujours vrais. Nous voulons nous assurer que nous avons réellement changé l'état du compteur, où il est possible d'être dix ou plus. De cette façon, nous ne sommes pas toujours coincés dans un sommeil. Fais ça. Je vais d'abord imprimer ce qu'est le comptoir. Je dis « compteur, espace côlon ». Et puis, en dehors de la corde, je pourrais faire plus compteur. Cela ajoutera le contenu de la variable de compteur à la chaîne globale transmise à la fonction de ligne d'impression. Maintenant, après, je peux dire « counter plus ». Ou si je le voulais vraiment, je pourrais mettre ça ici. Comme nous l'avons déjà appris, placer le plus, plus à gauche du nom de la variable augmentera d' abord, puis vous l'utiliserez. En utilisant, dans ce cas, nous l'imprimons sur la console. Avant de courir ça, passons en revue ce que je viens de faire. J'ai créé une variable entière avec une valeur de 0. Et nous disons que si cette variable est inférieure à dix, nous allons exécuter tout le code à l'intérieur de ces accolades. Maintenant, ce code imprime simplement le comptoir. Mais avant d'imprimer le comptoir, nous allons l' augmenter d'un. Cela signifie que notre boucle n'est plus infinie parce qu'elle s'exécute pour la première fois, elle imprimera une, puis deux, puis trois, et ainsi de suite jusqu'à ce qu'elle atteigne dix, où le compteur inférieur à l'étain ne serait plus vrai. Nous pouvons donc sortir de notre boucle et continuer avec le reste de notre programme. Voyons cela en action. Je peux faire Shift F2. Il devrait exécuter notre programme. Et si j'agrandis cette fenêtre, nous voyons maintenant le compteur 1 jusqu'à dix heures. C'est un exemple très simple de boucle. En gros, bien que cela soit vrai, nous allons exécuter tout le code à l'intérieur des accolades. 13. Faire en sorte que les boucles: Jetons maintenant un coup d'œil à la boucle Do While. Cette boucle est similaire à la boucle while, mais elle est légèrement moins utilisée. La syntaxe avec nous sera due, puis des accolades. Et puis, à la fin de l' accolade, on dirait avec nos parenthèses et un point-virgule. Maintenant, la condition va être mise à l'intérieur ici. En gros, le concept ici est que nous allons exécuter ce bloc de code immédiatement, quoi qu'il en soit. Ensuite, il va simplement devenir une boucle normale de while. Nous allons continuer à exécuter ce bloc de code tant que cette condition est vraie. Mais quel que soit le bloc de code que nous avons exécuté au moins une fois, c'est différent d'une boucle while, où ce code de crochet de bloc n'est exécuté que la première fois, seulement si la condition est vraie. Maintenant, un cas d'utilisation pratique consiste à recevoir les commentaires de l'utilisateur et s' assurer que nous obtenons le type d'entrée correct ou un nombre correct. Par exemple, je peux dire que l' entrée du scanner est égale à un nouveau scanner. Je peux passer dans le système point n. et ensuite je vais dire int number. Je ne vais pas lui attribuer de valeur. Et c'est quelque chose que nous pouvons faire avec des variables. Nous pouvons les créer, mais vous n'avez pas besoin de leur attribuer une valeur immédiatement. Maintenant, à l'intérieur du bloc de code do ici, je vais dire que le nombre est égal au point d'entrée suivant int. Je vais dire alors que le nombre est inférieur à dix. Donc, ce que ce code va faire, c'est que nous allons d'abord recevoir des commentaires de l'utilisateur. Nous allons créer un numéro que nous utiliserons plus tard. Ensuite, nous allons exécuter ce code. Quelle que soit la condition de marche , elle court toujours une fois. Nous allons donc essentiellement recevoir des commentaires de l'utilisateur, idéalement un chiffre. Et ensuite, nous allons continuer à l'exécuter tant que cette condition est vraie ici. Par conséquent, nous devons fournir un nombre de dix ou plus pour qu'il puisse réellement recevoir une entrée valide. Maintenant, après, je vais imprimer le numéro. Je vais faire ça avec Shift et FTN. À l'intérieur d'ici, je peux entrer ce que je veux. Par exemple, cinq ou sept. Tout ce qui est inférieur à dix sera complètement ignoré car la boucle while continuera de faire fonctionner ce bloc de code ici encore et encore jusqu'à ce que cette condition soit fausse. Je peux même entrer 5 000 négatifs, par exemple, et ça va continuer à fonctionner. Mais dès que j'entrerai quelque chose dix ou plus, par exemple 84, il va sortir de cette boucle, et il va imprimer 84 ici. 14. Pour les boucles: Jetons un coup d'œil à la boucle la plus puissante , connue sous le nom de for-loop. C'est le meilleur moyen de compter les choses ou de parcourir une liste de certains éléments. Cela peut sembler déroutant, mais au cours du cours, vous en verrez des exemples. Pour l'instant, essayons simplement de compter quelque chose. Dans l'exemple précédent, j'ai créé un compteur, puis il a utilisé une boucle while pour aller de l'avant et compter là-dessus. Nous pouvons utiliser une boucle for-loop pour y parvenir et d'une manière beaucoup plus propre. Par exemple, je peux dire pour des parenthèses, des accolades bouclées. Et à l'intérieur des parenthèses, il y aura trois éléments différents qui seront séparés par des points-virgules. Le premier sera l'initialisation. C'est ici que nous pouvons créer des variables qui peuvent être utilisées avec notre boucle. Je peux donc dire que le compteur int est égal à 0. La seconde va être une condition semblable à une boucle de temps ou d'une boucle à faire. Ce sera le cas si la boucle doit continuer à s'exécuter. Dans ce cas, je vais dire contre moins de dix. Ensuite, cette dernière section sera du code que nous avons exécuté chaque fois que la boucle sera terminée. Dans ce cas, nous voulons dire plus compteur. Donc, à chaque fois, nous allons augmenter le compteur d'un. Maintenant, ici, je vais simplement imprimer le comptoir sur la console. Et si je fais ça avec Shift et F2, nous devrions voir un nombre de 0 à neuf, comme nous le voyons ici. Toujours dans la boucle. Tout d'abord, il ne crée cette variable qu'une seule fois. Ensuite, si cette condition est vraie, si c'est le cas, elle n'exécute pas tout le code à l' intérieur de nos accolades bouclées ici, il suffit d'imprimer 0 sur la console comme nous le voyons. Puis, une fois qu'il arrive à la fin, il se rend compte qu'il n'y a plus rien à faire. Il va donc reculer en boucle. Comme il le fait, il augmente le compteur ici. Cette gnose, ce compteur est maintenant de 11 ans, c'est moins de dix. Si mignon de répéter le processus jusqu'à ce que cette condition soit fausse, que nous voyons ici. Parce qu'une fois qu'il a neuf ans et qu'il passe à dix, la condition n'est plus vraie. Par conséquent, nous sortons de la boucle. 15. Briser et continuer: Jetons un coup d' œil aux mots clés break et continue avec comment regarder les instructions break in switch. Et cela fonctionne de la même manière ici. Mais ce sont deux mots-clés qui peuvent être utilisés dans n'importe quel type de boucle. Par exemple, je peux dire que le compteur int est égal à 0, alors que le compteur est inférieur à dix. Maintenant, ici, je vais d'abord augmenter compteur, puis je vais l'imprimer sur la console. Mais disons que j' ai sauté le numéro cinq après l'avoir augmenté. Mais avant d'imprimer sur la console, comme je l'ai dit, si le compteur est exactement égal à cinq, je peux maintenant continuer et continuer ou simplement sauter tout le reste en boucle et revenir au début de La boucle. Il vérifiera toujours l'état. Mais tout ce qui a passé cette déclaration continue ici, eh bien, être ignoré dans ce cas n'est que cette ligne ici. Essentiellement, une fois que nous aurons atteint cela, nous allons simplement revenir au début et ils continuent à boucler normalement à partir de là, je vais appuyer sur Maj et F2 pour exécuter le code. Et ici, nous en voyons un à dix, mais il en manque cinq. Nous en voyons 46 immédiatement après. C'est le mot clé continue. Il reviendra automatiquement au début de la boucle. Jetons maintenant un coup d' œil au mot-clé break. Certains d'entre vous devinent peut-être déjà ce que cela va faire. Essentiellement, au lieu de simplement revenir au début, s'il va se détacher complètement de la boucle. Si je lance cela, nous voyons un à quatre car une fois que cinq sont atteints, il va immédiatement casser et commencer exécuter le code en dehors de la boucle while. Vous pouvez utiliser ces deux mots-clés pour mieux contrôler vos boucles, ce qui est exécuté et quand en sortir. Et ces deux mots-clés fonctionnent ici sur chaque boucle de Java, y compris les trois types que nous avons vus jusqu'ici. 16. Projet de calcul: Mettons toutes les compétences que nous avons acquises jusqu'ici aux États-Unis. Faisons notre tout premier projet. Nous allons juste être une simple calculatrice. Maintenant, la plupart des choses que vous avez apprises jusqu'à présent seront directement appliquées dans ce projet. Ce que ce projet est conçu pour être encore difficile si vous êtes tout nouveau dans la programmation lorsque vous avez commencé ce cours. Si vous rencontrez des problèmes ou que vous êtes aux prises avec ce projet attendu et ne vous inquiétez pas, il y a trois choses principales que je voulais faire quand il s'agit de cette vidéo. Le premier va revoir un plan. Lorsque vous concevez n'importe quel programme, même une simple calculatrice, il est important d' avoir un plan et une idée globale de ce que vous voulez faire avant de commencer à écrire du code. La deuxième chose, c'est que je veux que vous essayiez vous-même. Je vais donc vous montrer étape par étape comment je ferais de nous. Mais avant de le faire, je veux que vous mettiez en pause cette vidéo et que vous essayiez de la réaliser vous-même après avoir revu un plan. Bien que des cours comme celui-ci vous aident, le meilleur moyen de mieux programmer est le bon code. Je vous encourage vivement à aller le plus loin possible par vous-même avant de regarder comment je mettrais cela en œuvre. Maintenant, la troisième chose va être, je vais vous montrer comment j'ai créé ce programme. Après avoir conçu notre plan ensemble et après avoir essayé de le faire vous-même, je vais vous montrer comment je ferais ce programme. Commençons par la première étape, passant par un plan. Que doit faire ce projet ? Et que devons-nous faire pour y parvenir ? La première chose, c'est qu'il faut demander deux chiffres. Ensuite, il devrait demander, ou une opération mathématique. Il s'agira d'une multiplication ou d'une division plus, moins. Ce serait donc l'un de ces quatre personnages. Ensuite, nous devons afficher le résultat, puis revenir au début du programme où nous demandons des chiffres. Il s'agit d'un plan très, très basique lorsqu'il s'agit de ce projet. Certaines de ces choses devraient être simples. D'autres choses exigeront que vous réfléchissiez, peut-être même en revenant aux leçons précédentes. Encore une fois, essayez de mettre cette vidéo en pause maintenant et d'aller aussi loin que possible vous-même, puis revenez une fois que vous avez terminé un projet ou une fois que vous bloqué à 100% et que vous ne pouvez plus aller plus loin. Et je vais vous montrer étape par étape comment je ferais ce programme. J'espère que vous avez déjà essayé vous-même. Maintenant, allons de l'avant et mettons en œuvre chacune de ces étapes. Mais notre plan ici montre une utilité importante de lire toutes les instructions. Par exemple, nous voyons ici que nous allons revenir au début du programme. Cela signifie que tout ce programme pourrait se trouver dans une boucle while. Je peux dire que c'est vrai. Maintenant, il s'agira d'une boucle infinie qui fonctionnera à jamais, qui convient à ce cas d'utilisation. Maintenant, il va dire qu'il devrait demander deux numéros. Je vais donc commencer par faire un scanner appelant des entrées, ce qui est égal à un nouveau scanner passant dans le point n système. Ensuite, je vais imprimer entrer le premier numéro. Ensuite, je vais dire int numéro un est égal au point d'entrée suivant int. Jusqu'à présent, nous avons demandé un numéro. Faisons exactement la même chose pour le deuxième numéro. Je viens d'imprimer, entrez le deuxième numéro. Et puis nous allons avoir un autre entier, int nombre deux est égal au point d'entrée suivant int. Jusqu'à présent, le tout premier pas est fait. Nous avons maintenant les deux chiffres. Maintenant, nous devrions faire une opération de mathématiques. Ainsi, plus moins étoile ou quatre barres obliques seront l'addition, soustraction, la multiplication ou la division. Ensuite, disons à l' utilisateur ce qu'il faut faire. Je peux dire entrer dans une opération. Ensuite, nous allons dire quelles sont les options qui existent. Plus, moins étoile et barre oblique. Comme je l'ai dit, String Operation correspond au point d'entrée suivant. Nous avons donc maintenant accès aux chiffres et à l'opération que nous voulons. Maintenant, utiliser les instructions if pour comparer deux chaînes ne fonctionne pas correctement avec tout ce que je vous ai appris jusqu'à présent. Cela dit, nous allons utiliser des instructions de commutateur ici. Je peux dire le fonctionnement de l'interrupteur. Je pourrais alors dire cas avec un plus. Je vais ajouter une pause et ensuite je vais dire cas moins pause. Je vais juste y aller et ajouter ces quatre. Nous avons case, étoile, break, case, slash break avant. Maintenant, pour obtenir un résultat dans tous ces éléments, je dois le créer en dehors de cette orthèse bouclée. Les détails de cette situation seront expliqués dans une prochaine vidéo. Je vais donc créer un entier appelé résultats. Je n'attribuerai pas encore de valeur. Nous allons le faire à l'intérieur de notre déclaration de commutateur. Donc, s'ils ont inscrit un plus, je vais dire que les résultats correspondent au numéro un plus numéro deux. Assurez-vous également d'épeler un certain nombre de correctement. Ensuite, à partir de moins, je vais dire que le résultat est numéro un moins le numéro deux. Pour la multiplication, je peux dire que le résultat est égal numéro un fois le numéro deux. Et puis, pour la division, je peux dire que le résultat est égal numéro un divisé par le numéro deux. Maintenant, en dehors de l'instruction switch, je peux ensuite imprimer le résultat, comme je l'ai dit, l'espace de résultats. Et je peux ajouter les résultats ici. Maintenant, nous obtenons une erreur et notre EDI en survolant cela, cela indique que les résultats variables n'ont peut-être pas été initialisés. Nous pouvons aller de l'avant et cliquer sur Initialiser une variable. Il va simplement attribuer 0 ici. Même si nous allons remplacer cette valeur, il est toujours bon de voir que nous allons avoir une valeur par défaut car il ne sait pas avec certitude si l' un de ces quatre cas sera exécuté. Allons de l'avant et lançons ça et voyons ce qui se passe. Si j'appuie sur Maj et F2, il va dire entrer le premier numéro. Je vais entrer cinq, entrer le deuxième numéro, trois et tourner l'opération. Je vais entrer dans la multiplication. Le résultat est 15, et maintenant il revient sur le premier chiffre. Par exemple, je pourrais faire 105, puis soustraire. Et ici, on en a cinq. Il va donc continuer à boucler encore et encore et continuer à demander le premier deuxième numéro. Et nous pouvons ensuite faire n'importe quel type d' opération que nous voulons avec ces chiffres. Gardez maintenant à l'esprit que nous utilisons des entiers ici. Donc, si vous essayez de voir, cela ne vous donnera qu'un grand nombre de résultats. Si vous souhaitez obtenir des résultats plus précis, vous pouvez utiliser le double et au lieu d'un vous pouvez utiliser le double et au lieu entier pour la variable de résultat. Maintenant, si vous pouvez le mettre seul , félicitations et bon travail. Mais s'il avait besoin de regarder une partie de la vidéo supplémentaire pour le faire, ne vous inquiétez pas, c'est parfaitement bien, surtout si vous êtes nouveau dans c'est parfaitement bien, surtout la programmation, parce que c'est une toute nouvelle compétence. Au fur et à mesure qu'il passe à travers le cours, plus de choses deviennent plus apparentes pour vous et plus faciles pour vous. Il faut juste du temps pour apprendre toutes ces choses. 17. Méthodes: C'est là que les choses commencent à devenir un peu plus compliquées mais aussi plus amusantes. La rubrique suivante porte sur les méthodes. Les méthodes ne sont essentiellement qu' un bloc de code exécuté et leur objectif est de faire une chose spécifique. En fait, nous avons travaillé depuis tout le temps dans un méthodiste. Cette méthode principale est exécutée par défaut chaque fois que nous exécutons notre propre programme. Mais nous pouvons créer nos propres méthodes en dehors des accolades bouclées pour la fonction principale, je peux dire publique, statique, vide, exemple, parenthèses, puis accolades bouclées. Et ici, nous pouvons écrire le code que vous voulez. Par exemple, je peux simplement imprimer Hello World. Ensuite, dans notre méthode principale, je peux dire l'exemple. Et il saura automatiquement que nous essayons d'exécuter cette fonction. Si j'appuie sur Maj et F2, il devrait exécuter notre programme. Et ici, nous voyons HelloWorld dans la console. se passe donc beaucoup de choses ici. Et j'ai également mentionné des méthodes, et il a également mentionné des fonctions. Et les fonctions sont pratiquement la même chose, bien qu'il y ait une légère différence. La fonction est essentiellement ce que nous voyons ici. C'est techniquement une fonction, tout comme cela. Mais chaque fois qu'une fonction se trouve à l'intérieur d'une classe, ce que je vais expliquer dans une prochaine vidéo. Ces méthodes sont maintenant appelées méthodes, mais dans la plupart des cas, cela n'aura pas d'importance. Ils sont pour la plupart interchangeables. Mais techniquement, une fonction est en dehors d'une classe et une méthode est à l'intérieur. Encore une fois, nous couvrirons les cours plus en détail à l'avenir pour l'instant, considérez-les simplement comme un conteneur dans lequel toutes vos méthodes pourront s'asseoir. L'ajout de ces parenthèses ici invoquera , exécutera ou déclenche cette fonction. Ce sont tous des termes interchangeables essentiellement pour exécuter la fonction. Ce sont également des terminologies courantes qui sont utilisées lorsque nous essayons d'exécuter une fonction. Maintenant, vous vous demandez peut-être pourquoi on a appelé la méthode d'exemple alors que nous pouvons simplement imprimer Hello World dans la méthode principale. C'est parce que c'est évidemment un exemple trop simplifié. Dans un vrai programme, vous ne voudrez peut-être pas utiliser cet exemple de fonction une seule fois. Vous pouvez utiliser cet exemple de fonction plusieurs fois tout au long de votre classe ou avoir été tout au long de votre projet. La possibilité d' abréger certains éléments de fonctionnalité dans leurs propres méthodes facilite grandement la réutilisation de cette fonctionnalité. Nous verrons cela dans de vrais exemples fur et à mesure que nous avancerons dans le cours. Mais maintenant, expliquons ce que sont ces parenthèses et aussi ce que ce vide signifie ici. Fondamentalement, une fonction peut recevoir des entrées et elle peut également renvoyer une entrée. Je vais me débarrasser de ces commentaires. Et si je clique sur le nom de l'exemple et que j'appuie sur Maj et F6, je peux maintenant refactionner ou renommer toute cette fonction. Je peux dire ajouter. Maintenant, si j'appuie sur Entrée, il renomme la fonction ainsi que l'invocation de la fonction. Maintenant, à l'intérieur des parenthèses, on peut ajouter quelque chose connu sous le nom de paramètres. Par exemple, je peux dire int num one et int num2. Ils sont séparés par une virgule. Nous pouvons même avoir plusieurs types de variables. Par exemple, un exemple de chaîne. Mais dans ce cas, nous ne faisons qu'ajouter deux chiffres. Il n'est donc pas nécessaire d' avoir une ficelle ici. Maintenant, automatiquement intelligent nous donne cette flèche rouge ici, disant que nous ne pouvons pas l'appeler sans aucun paramètre. Nous pouvons donc transmettre des informations ici, par exemple 510, et maintenant nous n' avons plus d'erreurs, mais ce code ne fonctionne pas comme prévu. C'est parce que nous ne faisons que simplement imprimer Hello World. Mais ce que nous voulions faire, c'est que nous voulons renvoyer la somme entre num1 et num2. Je peux dire retour num1 plus num2. Maintenant, cela nous donne une erreur ici. Si je le survole, il est dit que je ne peux pas renvoyer une valeur d'une méthode avec un type de résultat vide. Cela évite ici, ce qui signifie que rien ne sera rendu. Nous devons être très clairs sur le type de données qui seront renvoyées par chaque fonction. Dans ce cas, nous retournons un entier parce que nous ajoutons pour être introduits ensemble. Nous pourrions donc changer un vide en int et l'erreur disparaît. Maintenant, ici, je peux dire int sum égal à 510, et je peux en imprimer quelques-uns. Maintenant, si je l'exécute avec Shift F dix, cela imprimera la 15e sur la console. Maintenant, si nous le voulions, nous pourrions également passer cet appel de fonction à l'intérieur de la fonction de ligne d'impression. Et en fait, la ligne d'impression a été sa propre fonction intégrée que nous utilisons depuis tout ce temps. Il a ses propres parenthèses et nous lui transmettons des informations comme nous le sommes avec cette fonction d'ajout. Et voici un exemple parfait des raisons pour lesquelles nous voulons créer des fonctions. Parce que je peux copier et coller ça quelques fois. Et je peux maintenant ajouter différentes valeurs que je voulais. Cela nous donne maintenant trois résultats différents de 1520 et trois résultats négatifs. Et c'est parce que nous avons une fonction d'ajout simple ici. Il s'agit évidemment d'une fonction très simple. Mais si nous avions des fonctions plus compliquées avec plus de code à l'intérieur, vous pouvez voir les avantages de ne devoir écrire le code qu'une seule fois , puis un fonctionnement à partir de différents endroits comme plusieurs fois que vous le souhaitez. Une dernière remarque est que ces sont techniquement appelés paramètres, mais lorsqu'ils sont transmis , par exemple ici, ou ces nombres directement, sont appelés arguments. Vous disposez de paramètres et d'arguments. Tout comme les fonctions ou les méthodes, elles sont souvent utilisées de manière interchangeable, mais techniquement, ce que vous écrivez dans la fonction elle-même est connu sous le nom de paramètres. Et ce que vous transmettez dans la fonction est connu sous le nom d'arguments. Mais encore une fois, tout comme les fonctions par rapport aux méthodes, elles sont souvent utilisées de manière interchangeable. 18. Surchargement de méthode: Dans la vidéo précédente, nous avons créé une fonction d'ajout simple qui renvoie la somme entre deux nombres. Mais que se passe-t-il si nous voulons ajouter des chaînes ensemble pour créer une phrase ? Par exemple, je peux imprimer ajouter bonjour et monde. Et évidemment, cela ne fonctionne pas. Mais bien sûr, je pourrais imprimer l' ajout 55 et cela fonctionnerait. En règle générale, vous ne pouvez avoir qu'une seule méthode portant le même nom, similaire aux variables, mais nous pouvons faire quelque chose appelé surcharge de méthode. Cela signifie essentiellement avoir plusieurs méthodes portant le même nom, mais des paramètres différents et des types de retour différents. Par exemple, je peux dire chaîne statique publique avec une majuscule S, String s1 et S2. Maintenant, ici, je peux retourner s1 plus un espace plus S2. Fondamentalement, on réunit les deux mots. Nous avons maintenant deux méthodes portant le même nom, mais nous les avons surchargées où Java va maintenant savoir laquelle appeler en fonction des paramètres transmis. En ligne, cinq sont des passes et des cordes. Alors, comment va-t-on appeler une méthode ici ? Les lignes correspondent à la transmission d'un nombre entier. Comment va-t-on appeler la méthode ici ? Je peux aller de l'avant et faire fonctionner cet étui à la sortie. Ici, nous voyons HelloWorld et dix. La surcharge de méthode est souvent utile dans des situations comme celle-ci, où vous avez des fonctionnalités similaires, mais vous souhaitez transmettre différents types de variables. Vous pouvez surcharger ces méthodes, les contournant et en ayant différents paramètres et éventuellement un type de retour différent si cela vous semble logique. 19. Portée: Chaque fois que nous créons une orthèse ouvrante bouclée, comme celle-ci ici, c'est créer quelque chose connu sous le nom de lunette. Et la portée va limiter ce qui peut ou ne peut pas utiliser certaines variables. Par exemple, je peux dire que le compteur int est égal à 0. Et puis je vais créer une boucle while pour incrémenter ce compteur. Alors que le compteur est inférieur à dix. Je peux alors dire «  Counter plus plus ». Maintenant, nous pouvons accéder comme comptoir parfaitement, donc je peux l'imprimer ici et tout fonctionne comme prévu. Mais que se passe-t-il si je crée une deuxième variable à l'intérieur ? Par exemple, je dis que l' exemple int est égal à 15. Et je devais imprimer ça pour quelque raison que ce soit. De toute évidence, cela n'a pas trop de sens, mais ce n'est qu'un exemple. Tout fonctionne jusqu'à présent. Mais que se passe-t-il si j'essaie d'accéder à un exemple en dehors de la portée de la boucle while ? Je pourrais donc essayer de l' imprimer. Je peux ajouter un exemple et nous obtenons une erreur ici. Si je survole cela, il est dit que je ne peux pas résoudre exemple de symbole et il y a même une solution ici. Ou je peux cliquer pour amener l'exemple int dans la portée actuelle. Notez que cet exemple est créé en ligne 14 ici. Mais si je clique sur la solution, nous créons maintenant la variable sur la ligne neuf, qui se trouve dans la zone principale de la fonction. Cela signifie que tout à l'intérieur de la fonction principale peut l'utiliser, y compris la portée de la boucle while, car je suis également à l'intérieur de la fonction principale. Il a donc changé notre code pour simplement réaffecter l'exemple avec la valeur de 15. Mais nous le créons en dehors de la boucle While. Maintenant, même si tout cela est dit, n'est pas une bonne idée de simplement placer aveuglément toutes vos variables au sommet de votre fonction. Par exemple, supposons que je n' imprime pas cette variable ici à la ligne 20. Dans ce cas, la variable d' exemple n'a pas besoin d'être définie dans la portée principale. Au lieu de cela, il pourrait être simplement défini dans la portée de la boucle while. Je pourrais dire un exemple. Et puis je peux me débarrasser de la création de variables ici. En règle générale, à moins d' avoir une bonne raison de le faire, vous devez toujours définir vos variables aussi localement que possible. Par là, je veux dire, ici même, c'est le plus possible localement parce que nous utilisons la variable en ligne 16. Il va donc vers votre local jusqu'à la portée ici. Il n'est pas nécessaire de le définir en dehors de la portée principale, car pour l'instant, avec ce code, nous n'utilisons pas du tout un anti, la portée principale. Nous l'utilisons simplement à l'intérieur de la portée de la boucle while. 20. Opérateur ternaire: Parfois, vous voudrez peut-être écrire une instruction if, mais de manière plus condensée, c'est souvent le cas lorsque vous souhaitez avoir une seule valeur ou que vous attribuez à une variable en fonction d'un vrai ou faux énoncé, nous pouvons réaliser que c'était quelque chose connu sous le nom d'opérateur ternaire. Il s'agira essentiellement d'un type de condition suivi d' un point d'interrogation, puis d'une valeur vraie, deux-points, puis d'une fausse valeur. Cela peut sembler déroutant. Jetons un coup d'œil à un vrai exemple. Je vais créer un booléen appelé est membre jusqu'à ce que cela soit égal à vrai. Cela peut être que si vous payez pour un abonnement quelque part et qu'ils proposent un paiement unique, ils peuvent vous accorder une réduction sur cet achat. Par exemple, ici, je peux dire que int price égal est membre. Encore une fois, c' est notre condition. Une condition n'est qu'une expression booléenne. Donc, une simple instruction booléenne fonctionnera très bien. Donc, un point d'interrogation, et ensuite nous avons notre vraie valeur. Dans ce cas, le prix peut être de 10$. Mais ce que l'on dit que nous voulons imposer un prix plus élevé aux personnes qui ne sont pas déjà membres. Je peux donc ajouter n'importe quel deux-points et le prix ici pourrait être de 40$. Maintenant, je peux aller de l'avant et imprimer le prix ici. Et je peux le faire avec Shift et FTN. Ici, nous en voyons dix dans la console. Mais si je change de membre en faux et que je lance ça, nous verrons alors 40 dans la console. La raison en est maintenant que cette condition est fausse. Alors, qu'est-ce qui va utiliser ce code ici qui était partiellement fausse, n'importe quoi après le deux-points sera utilisé. Si la condition est fausse, tout ce qui précède le deux-points sera utilisé si c'est vrai. Maintenant, il est évident que nous pourrions faire quelque chose de similaire. Si je dis que le prix int est égal à 0, alors je peux dire si c'est le cas, rappelez-vous, je peux maintenant dire que le prix est égal à dix, sinon le prix est égal à 40. Et cela fonctionnera exactement de la même manière. Mais un opérateur ternaire brille vraiment ici chaque fois que vous utilisez instructions si simples où vous voulez que cela se trouve sur une seule ligne de code. Parce que l' écriture de cette ligne de code est évidemment beaucoup plus facile que d' écrire toutes ces lignes. 21. Tableaux: Parlons maintenant des tableaux, qui ne sont essentiellement qu'un ensemble de variables. Par exemple, supposons que j'ai un certain nombre de résultats différents aux tests d'étudiants. Je peux dire que int étudiant un est égal à 96, int étudiant deux égal à 49, étudiant trois est égal à 76, et ainsi de suite. À moins d'en avoir un tas, je ne veux pas nécessairement créer un tas de variables différentes. Au lieu de cela, je peux créer une variable appelée tableau. Il s'agira essentiellement d'une collection ou d'une liste de variables différentes. Je dois d'abord spécifier la variable que le tableau va contenir. Chaque baie ne peut contenir qu'un seul type. Vous ne pouvez pas les mélanger et les associer. Par exemple, vous ne pouvez pas avoir d'entier avec une chaîne qui doit tous être du même type exact. Je peux donc dire int, ouvrir et fermer des crochets. Cela représente un tableau. Je ne pourrais pas dire que les scores des étudiants sont égaux à une nouvelle largeur int, les crochets également. Cela va créer notre propre tableau. Mais chaque fois que nous créons un tableau sans valeurs initiales, ce que je vais vous montrer ici dans un instant, nous devons spécifier combien de types d' éléments différents nous voulons faire de la place. Dans ce cas, je voulais faire de la place pour trois personnes. Et donc maintenant, j'ai créé un tableau qui peut contenir jusqu'à trois entiers pour attribuer une valeur spécifique. Je peux dire les scores des étudiants, des crochets. Et c'est ici que nous spécifions quelque chose connu sous le nom d'index. Il s' agit essentiellement d'un compteur pour lequel nous allons utiliser exactement les trois emplacements qui nous sont donnés. Cela commence à compter à 0. Je peux donc dire que l'indice des scores des étudiants de 0 est égal à 96. L'indice de score des élèves d'un est égal à 49. Les élèves obtiennent un indice de deux points égal à 76. Maintenant, je vais aller de l'avant et me débarrasser de ces trois entiers ici. Et maintenant, je veux imprimer chacun d'entre eux sur la console. Pour ce faire, nous pouvons utiliser une syntaxe très similaire à celle-ci. Je peux donc imprimer l'indice des scores des étudiants de 0. Je vais ensuite copier et coller cela à l'aide de Control C et Control V, ou de la commande C, de la commande V sur un Mac. Et maintenant, je peux modifier ces indices à 12. Maintenant, je peux le faire avec Shift et FTN. Nous voyons ici les trois chiffres. Mais que se passe-t-il si j'essaie d'accéder à l'index trois, qui n'existe pas réellement ? En fait, nous recevons ce petit avertissement ici. Si je survole cela, il est dit que l'index du tableau est déséquilibré. Si je vais exécuter cela, nous allons en fait obtenir une erreur dans notre console. Et c'est ce qu'on appelle une exception. Une exception est que quelque chose fera d'un examen plus approfondi à l'avenir. Mais pour l'instant, il suffit de penser que c'est une erreur. La raison pour laquelle nous avons obtenu cela est parce que nous essayons d'accéder à quelque chose pour lequel la baie n'a pas de place. Nous n'avons attribué de l'espace que pour trois entiers dans ce tableau, et nous avons utilisé les trois. Encore une fois, n'oubliez pas qu'il commence à compter à 0. Donc, les trois places que nous avons notre 012. Par conséquent, l'indice trois ne peut pas exister. Et il est dit d' essayer d'accéder à quelque chose en dehors des limites de ce tableau. Un autre exemple que je veux vous montrer est comment créer un entier en définissant des valeurs spécifiques lors de sa création. Donc, au lieu d'en spécifier trois, nous pouvons supprimer cela. Ensuite, après les crochets, nous allons créer nos propres accolades bouclées. Ici. Nous pouvons ajouter n'importe quel nombre d'éléments. Nous voulons l'exemple quatre-vingt-dix six, quarante neuf et soixante-dix six. Et maintenant, nous avons ces avertissements ici. Si je le survole, cela indique qu' une variable est déjà affectée à cette valeur. Donc, essentiellement, ces trois lignes de code ici ne sont pas nécessairement du tout. En les supprimant et que je réexécute le programme, nous obtiendrons la même sortie exacte que vous voyez ici. Nous pouvons maintenant disposer de tableaux pour n'importe quel type de variables. Par exemple, nous pouvons créer un tableau de chaînes ou un tableau de booléens, mais il s'agit d'un exemple très simple avec des entiers. Et une dernière chose que je voulais vous montrer, c'est comment accéder à la longueur ou au nombre d' éléments d'un tableau. Et une dernière chose que je voulais vous montrer est comment accéder au nombre d'éléments, combien d'éléments se trouvent dans un tableau ? Je peux imprimer ça. Je vais accéder aux scores des étudiants ici. Nous pouvons accéder à la longueur. Il s'agit d'un entier, et il va indiquer combien d'éléments se trouvent à l'intérieur de ce tableau. Je peux donc aller de l'avant et faire ça. Nous voyons ici le numéro trois car il y a trois éléments. Si j'en ajoutais un de plus ici, je peux le faire une fois de plus et nous devrions en voir quatre comme nous le faisons ici. Bien sûr, nous ne voyons pas les 100 imprimés sur la console car nous n'imprimons pas l'index trois, qui existe maintenant grâce à ce 100 ici. Mais nous n'imprimons que les zéros initiaux ou le 100 est affiché sur la console. 22. Pour chaque boucle: Dans la vidéo précédente, nous avons regardé comment créer des tableaux et comment accéder à chaque élément individuel. Mais que se passe-t-il si nous avions un plus grand nombre d' entiers et que nous ne voulons pas imprimer chacun d'eux. Nous pouvons utiliser une boucle standard ou quelque chose connu sous le nom de boucle pour chaque boucle aller de l'avant et parcourir chaque élément. Ici, je vais vous montrer deux exemples. Ici, nous avons une norme pour la boucle. Je vais également vous montrer un nouveau concept qui est une boucle pour chaque boucle. Mais d'abord, nous avons un standard pour la boucle, comme je l'ai dit, pour les parenthèses, les accolades bouclées. Et à l'intérieur, je vais d'abord créer mon propre compteur entier entier égal à 0. Bien que le compteur soit inférieur à ce que les élèves obtiennent la longueur des points. Nous pouvons ensuite augmenter le compteur. Et puis ici, je peux certainement imprimer l' indice des scores des étudiants. Nous pouvons transmettre des variables en tant qu'index ici. Et cela accédera à l'index 0, puis 12, et ainsi de suite jusqu'à ce que nous parcourons tous les éléments de ce tableau. Pour le prouver, je peux le faire avec Shift et F11. Nous voyons ici les quatre numéros de notre console. Maintenant, la boucle dans les tableaux est si courante qu'ils ont créé une syntaxe plus courte. Je vais commenter ces trois lignes. Ici. Je vais utiliser quelque chose connu sous le nom de boucle pour chaque. Je peux dire pour int number, deux-points, puis le nom de notre tableau. Dans ce cas, un étudiant note. Ici, le nombre de variables va contenir chaque élément individuel pendant qu'il les traverse. Ainsi, lors de la première itération de cette boucle, la variable numérique contiendra la valeur 96. La prochaine fois qu'il passe en boucle, il tiendra 49 et ainsi de suite. Pour le prouver, je peux imprimer le numéro et je peux l'exécuter avec Shift et FTN. Et ici, nous voyons la même sortie exacte. Désormais, une boucle foreach fonctionne généralement, mais dans certains cas d'utilisation, vous aurez peut-être besoin d'accéder à l'index que vous utilisez. Par exemple, cette variable de compteur ici. Dans ce cas, vous pouvez simplement utiliser une boucle for-standard. Mais encore une fois, dans la plupart des situations , la boucle pour chaque boucle sera très bien. 23. Tableaux multidimensionnels: Dans les vidéos précédentes, nous avons examiné des tableaux simples, mais examinons maintenant les tableaux multidimensionnels. Fondamentalement, un Raisa a des tableaux comme valeurs. Ici, je vais créer un tableau qui contient un tableau de partitions. Par exemple, je peux dire ici deux crochets, les scores sont égaux aux accolades. Et ici, on va s' attendre à un autre tableau de valeurs. Mais pour définir ces tableaux, nous allons simplement utiliser les accolades bouclées. Par exemple, nous avons nos bretelles bouclées avec quatre-vingt-dix, six, quarante, cinq et quatre-vingts. Maintenant, pour faciliter la compréhension de la liste actuelle, pour faciliter la compréhension ce que cela va être pour Test1. Nous avons ensuite test2, qui a des scores différents, disons 8666 puis 90. Comment voulons-nous parcourir chaque élément individuel en boucle ? Nous devons d'abord parcourir chaque tableau individuel, où la valeur devient alors chaque tableau individuel ici. Nous pouvons donc utiliser une boucle pour standard ainsi qu' une boucle pour chaque boucle. Je vais vous montrer un exemple des deux. Pour le standard for-loop, je suppose que le compteur int est égal à 0, alors que le compteur est inférieur à la longueur des points scores, je peux ensuite augmenter le compteur. Maintenant, ici, nous avons besoin de quelque chose connu sous le nom de boucle for-imbriquée. Où est-ce, où nous avons une boucle à l'intérieur d'une boucle ? Je peux dire que pour int compteur égal à 0, tandis que le compteur deux est inférieur aux scores, l'indice de la longueur du point de compteur plus le compteur plus le compteur de ce qui se passe ici. En gros, nous faisons un standard for-loop, ce que vous comprenez déjà. Mais ensuite, nous avons une boucle for-imbriquée. Je crée une deuxième variable de compteur et je l'utilise partout à part ici. En gros, ce qui va se passer, c'est que nous parcourons chaque tableau individuel. Et c'est ce à quoi nous aurons accès lors de la première boucle for-loop. index 0 de la première boucle for-loop sera tout cet index de tableau un, ou la deuxième itération à nouveau en boucle, sera tout ce tableau. Mais maintenant, nous allons accéder à chaque élément individuel à l'intérieur de l'index des scores du compteur qui va d' abord accéder à ce tableau ici. Nous accédons à la propriété length à partir du premier tableau. Et alors que la boucle for-loop initiale est de nouveau, nous allons avoir accès à la deuxième matrice car le compteur avec un compteur égal. Encore une fois, n'oubliez pas que c'est l'indice 0 Index 1. Les index commencent à compter à 0. Donc, pour accéder à chaque valeur individuelle, je peux imprimer. abord, je vais imprimer test plus, j'ajouterai entre parenthèses et je peux dire compteur plus un. La raison en est que le compteur commence à 0 et que nous voulons dire test1, test2 et non test 0, test un. Nous allons simplement en ajouter un au comptoir. Mais cela ne modifiera pas du tout la contre-variable parce que nous prenons essentiellement la valeur du compteur, puis nous en ajoutons une. Mais nous n'attribuons pas cela à la contre-variable. Ensuite, nous allons ajouter chaque score individuel. Par exemple, l'indice de compteur de scores, puis une deuxième parenthèse, l'indice de compteur à arrêter. Je fais ça avec Shift et F2. Nous voyons maintenant que test1 est 9825 et le test deux est de quatre-vingt six, soixante six et quatre-vingt-dix. Juste pour simplifier un peu les choses, si je me débarrasse de ces parenthèses et que je lance ça, nous obtenons essentiellement la même chose exacte, sauf que ce compteur ici va montrer l'index 0 au fur et à mesure que nous parcourons la boucle le tout premier tableau, et index1 lorsque nous parcourons le deuxième tableau. La seule raison pour laquelle j'ai ajouté plus un ici est de le rendre plus lisible par l'homme. Maintenant, comme vous pouvez le constater, ce code est un peu déroutant. Et généralement, vous n' allez pas travailler avec baies multidimensionnelles qui, dans l' idéal, il existe de meilleures solutions pour gérer vos données, surtout si vos données ont besoin trois dimensions ou plus de il y aura généralement une meilleure solution que d'utiliser autant de tableaux imbriqués. Mais juste pour être complet ici, je vais vous montrer comment parcourir tableau imbriqué ou un tableau multidimensionnel plutôt, avec un, pour chaque boucle, je dis pour int array, je peux Appelez ce tableau un pointage deux-points. Cela va parcourir chaque tableau individuel. Ici, nous avons maintenant accès à chaque baie. Pour la première itération, pour chaque boucle, nous aurons accès à cette valeur. Ensuite, la prochaine itération nous aurons accès à cette valeur. Nous pouvons utiliser une norme pour chaque boucle de cette baie. Pour le nombre, le tableau deux-points un. Maintenant, ici, nous pouvons imprimer le numéro. Maintenant, je peux exécuter cela avec Shift et F2. Et ici, nous voyons les six numéros individuels. C'est un bon exemple, comme je l'ai mentionné dans la dernière vidéo, que pour chaque boucle n'a pas accès à l'index. Ici, nous disons ce numéro de test parce que nous utilisons essentiellement l'index ici. Les deux pour chaque boucle. Nous n'y avons pas nécessairement accès. Si vous vouliez accéder à l'index pour imprimer le numéro de test, vous devez utiliser une boucle for-loop standard. 24. Varargs: Maintenant que nous avons une meilleure compréhension des tableaux, nous pouvons aborder un concept connu sous le nom de varargs, qui est une autre façon de transmettre autant de paramètres différents que vous le souhaitez dans une fonction. Je vais donc créer une fonction d'ajout très simple. Je peux dire public, statique int add. Et ici, je peux avoir int num1, int num2 ici. C'est très simple. Nous retournons simplement num1 plus num2. Maintenant, pour m'assurer que tout fonctionne, je peux imprimer l' ajout en 1015, et je peux l'exécuter avec Shift et F11. Nous voyons ici la somme de 25, donc tout semble fonctionner. Mais que se passe-t-il si je veux ajouter un autre numéro ici, ou plusieurs numéros différents autant que je le veux. Le problème ici est que je dois maintenant ajouter un paramètre individuel pour chaque entrée et un certain nombre d'entrées pourraient changer. Eh bien, le concept de varargs résout ce problème. Nous pouvons essentiellement transmettre n'importe quel nombre d'entiers dans nos paramètres. Par exemple, je peux dire int trois points puis des nymphes ou des nombres, selon celui que vous préférez. Les nombres vont essentiellement être un tableau. Cela dit, nous n' avons plus accès à num1, num2. Au lieu de cela, nous devons maintenant parcourir chaque élément individuel de ce tableau, comme je l'ai dit, int sum est égal à 0. Et puis je pourrai en revenir. Mais avant de revenir, nous devons ajouter chaque chiffre à la somme. Je peux utiliser une boucle for-standard ou elle peut utiliser une boucle pour chaque boucle. Donc pour le nombre int, les nombres deux-points. Et puis je peux dire que la somme est plus égale au nombre. Maintenant, je peux exécuter cela et nous devrions voir la somme de tous ces chiffres ici, qui à 53. Nous pouvons même réduire cela à autant d' arguments que nous le voulons. Par exemple, je peux juste avoir étain et ça va en imprimer dix. Maintenant, il faut garder à l'esprit que les varargs doivent être le dernier argument. Parce que si nous avions d' autres choses ici, pour quelque raison que ce soit, supposons que nous ayons un entier étudiant ici. Il ne sait pas où ils commencent et où ils s'arrêtent. Si nous avons des arguments supplémentaires, nous devrons les ajouter avant les varargs. Varargs devrait toujours être à la toute fin. Il sait donc par où ils commencent, et il sait que chaque autre paramètre transmis, il sera accessible comme cela varie. Par exemple, dix ici seront des étudiants, et il identifie cela ici même, mais tous les numéros supplémentaires ici. Donc seulement 515 vont maintenant faire partie du paramètre varargs. 25. Constantes et coulage: Parfois, il se peut que vous ne souhaitiez pas que vos variables modifient les valeurs et que vous souhaitiez parfois modifier le type de variables que sont vos variables. Commençons par jeter un coup d'œil à quelque chose connu sous le nom de constantes. Cela signifie essentiellement qu' une valeur variable ne peut pas changer. Si je dis que le nom de chaîne est égal à Alex, je peux l'imprimer sur la console. Et bien sûr, avant de le faire, je peux changer cela en mon nom complet, qui est Alexander. Mais disons hypothétiquement je ne veux pas que cette valeur change. Je peux ajouter le mot clé final avant de créer notre variable. Et maintenant, je reçois une erreur ici. Si je survole cela, il va dire que vous ne pouvez pas attribuer de valeur à une variable finale. Le nom se demande peut-être pourquoi voudriez-vous faire cela ? Pourquoi ne pas simplement ne pas modifier la valeur de la variable ? C'est peut-être la solution évidente lorsqu'il s'agit d'un programme simple comme celui-ci. Mais dans un vrai programme où vous avez des centaines de fichiers sur des centaines de milliers de lignes de code potentiellement, et potentiellement même d'autres collègues. Vous ne vous souvenez peut-être pas de tout ce que fait votre code. vous souvenez peut-être pas non plus que certaines variables peuvent avoir des effets secondaires si vous modifiez les valeurs. Si vous avez une variable dont les valeurs ne doivent pas changer, vous devez en faire une dernière variable avec ce mot-clé ici. Maintenant, je vais vous montrer quelque chose connu sous le nom de casting, qui consiste essentiellement à prendre une variable et attribuer à une variable différente d'un type différent. Par exemple, je pourrais dire que le montant int est égal à dix. Et je peux ensuite créer un double qui contient une valeur décimale. Par conséquent, nous pouvons avoir des nombres non entiers. Et je peux dire que le nouveau montant est égal à un montant. Maintenant, si je vais de l'avant et imprime nouveau montant et que je l'exécute avec Shift et FTN. Nous voyons maintenant dix points 0. Et dans ce cas, nous n'avons pas besoin de lancer quoi que ce soit , car tous les doubles peuvent techniquement toujours être des entiers. Mais une fois que nous aurons créé un double, il va s'ajouter à la décimale de 0, mais supposons que cela allait être inversé. Je peux dire que le double montant est de 10,5. Je pourrais alors dire que int nouveau montant est égal au montant. Et nous avons une erreur ici. Si je survole cela, cela indique que le type requis est un entier, mais que le type fourni est un double. Eh bien, nous pouvons faire quelque chose appelé « lancer cet entier l' exception de la double valeur en tant que valeur entière. Et pour ce faire, nous pouvons ajouter entre parenthèses et le type de variable, dans ce cas int juste avant le nom de la variable cible, qui est dans ce cas la quantité. Maintenant, si je lance cela, nous disons maintenant dix dans la console et non 10.5, car les entiers ne peuvent être que des nombres entiers. Donc, tout ce qui n' est pas acceptable, par exemple, cette 0,5 va être ignorée. Le nombre entier qui reste dans ce cas, étain va être affecté à notre nouvelle variable de montant ici. C'est ainsi que vous présentez des valeurs primitives. Et je vais discuter de la différence entre les primitives et les types de valeurs de référence dans une prochaine vidéo. Prenons un exemple rapide de la conversion d'un entier en chaîne. Par exemple, nous avons un nombre entier dix, mais nous voulons la chaîne dix, quelque chose comme ça. Eh bien, je peux dire que le nombre entier est égal à dix. Ensuite, je peux dire chaîne, chaîne égale chaîne avec une valeur de point S majuscule de. Ici, nous pouvons voir tous les différents paramètres possibles que nous pouvons transmettre. Nous pouvons transmettre un entier, un caractère à flot et bien d'autres. Dans ce cas, nous voulons simplement passer un numéro. Ensuite, je peux imprimer une chaîne sur la console. Et si je fais ça, on en verra dix comme une corde. Maintenant, si je voulais faire l'inverse ici, je peux dire chaîne, chaîne égale à dix entre guillemets. Je pourrais alors dire int number. Je pourrais alors dire entier avec un majuscule I dot parse int. Et nous voyons ici que nous pouvons passer dans une ficelle. Et cette fonction supérieure va également renvoyer un entier. Je peux transmettre les arguments de chaîne. Ensuite, je peux imprimer le numéro sur la console. Si je fais ça, on devrait encore en voir dix. Mais maintenant, il s'agit d'une valeur numérique réelle. Je le voulais donc, j'ai pu l'augmenter d'un avant de l'imprimer. Maintenant, avec C11, au préalable, nous conversions un nombre en chaîne, donc nous ne pouvions pas augmenter cela une fois qu' il était déjà sous forme de chaîne. 26. Méthodes de chaîne courantes: À ce stade, vous devriez déjà savoir comment un basique si Stephen fonctionne. Mais si vous avez déjà essayé comparer des chaînes avec une instruction if, vous remarquerez peut-être que cela ne fonctionne pas correctement. Par exemple, commençons par demander des commentaires à l'utilisateur. Je pourrais dire, entrez votre nom. Ensuite, je vais créer un scanner. Je vais appeler cette entrée. Je vais rendre cela égal à un nouveau scanner qui passe dans le système point n. C'est des choses assez similaires à celles que nous avons déjà vues. Je pourrais dire flux, nom d'utilisateur est égal au point d'entrée suivant la ligne. Cette opération permet de récupérer la ligne entière entrée par l'utilisateur. Disons maintenant que si je saisis mon nom en tant qu'Alex, il dira bonjour Alex. Bien sûr, dans un vrai programme, nous pourrions simplement utiliser la valeur de la variable. Mais je veux le faire spécifiquement dans une déclaration si pour démontrer quelque chose. Je peux dire que si le nom d'utilisateur est exactement égal à Alex, je ne pourrais pas imprimer Hello Alex. Je peux courir ça avec Shift et je l'ai quitté. Je pourrais ensuite entrer mon nom et je vais entrer la chaîne exacte que nous recherchons dans l'instruction if. Donc, Alex, avec un A majuscule, si je saisis ça et que j'appuie sur Entrée, on ne voit rien imprimé sur la console. En effet, les forces ne peuvent pas être comparées à l'aide d'un signe double égal. Si je survole cela, cela indique que les valeurs de chaîne sont comparées à l'aide doubles égaux et non égaux en tant que méthode. Afin de comparer les chaînes. Au lieu d'utiliser la pâte égale, on peut prendre la ficelle, on peut appuyer sur point. Et ici, nous avons accès à de nombreuses fonctions différentes. Nous en regarderons quelques-uns vers la fin de cette vidéo. Mais celui que je veux vous montrer est appelé égal et égal à ignorer la casse. Nous allons donc commencer par des égaux. Ici, nous pouvons passer une autre chaîne, par exemple, Alex et moi pouvons exécuter ça. Et je peux maintenant entrer Alex avec un majuscule et je dirai bonjour Alex. Si je refais ça, je peux entrer Alex avec un A minuscule et rien que nous avons imprimé. Si je voulais ignorer la majuscule de l'une ou l'autre chaîne, alors je peux dire égal à ignorer la casse et ensuite transmettre Alex. Donc, si je lance ça, je peux maintenant entrer Alex avec un A minuscule, et il imprimera Hello Alex, car il ne se souciera pas de la majuscule de l'une et il imprimera Hello Alex, car il ne se souciera pas ou l'autre des chaînes. C'est ainsi que nous comparons deux chaînes dans une instruction if. Mais jetons maintenant un coup d' œil à quelques autres exemples de méthodes de chaîne couramment utilisées. Je vais aller de l'avant et supprimer tout ce code. Et je vais simplement dire que le nom de chaîne est égal à Alex. Et puis ici, je ne vais pas imprimer thème, adopter en minuscules. Je n'ai pas pu exécuter ça et nous allons voir Alex qui a un majuscule. Maintenant, nous les affichons toutes en minuscules dans la console. la même manière, nous devons également faire des majuscules. Et bien sûr, si je fais ça, on voit Alex en majuscules et dans la console. Il y a quelques autres fonctions que nous avons , comme la longueur. Si je l'exécute, nous allons voir combien de caractères individuels se trouvent dans la chaîne. Dans ce cas, c'est pour. Et nous pouvons simplement appuyer sur un point à la fin du nom et nous voyons un tas d' autres méthodes que nous pouvons utiliser. Par exemple, nous pouvons obtenir ici un personnage à un index spécifique. Ici, je peux obtenir l'index un, qui devrait être un l minuscule. Si je l'exécute, nous pouvons le confirmer dans notre console. Ici, nous voyons une minuscule que je suis retournée. Nous avons beaucoup d'autres options. Par exemple, nous pouvons concat, ce qui signifie concaténer, en ajoutant essentiellement une partie supplémentaire d'une chaîne. Je peux donc ajouter tout mon nom de famille ici. Et si je fais ça, on voit maintenant Alex Flores. Et l'espace ajouté dans la console est dû à l' espace que j'ai ajouté ici. Par défaut, il n' ajoutera aucun espace. Il ne fera que ce que vous lui direz. N'hésitez pas à jouer avec d'autres fonctions de chaîne ici, il existe un certain nombre de fonctions utiles que vous pouvez utiliser pour changer la chaîne ou utiliser la chaîne de différentes manières. 27. Séquences d'échappement: Plongeons maintenant dans un autre concept de cordes connu sous le nom de séquences d'échappement. Il s'agira essentiellement de caractères individuels qui ont des significations spécifiques au sein des restrictions. Par exemple, je peux dire chaîne, chaîne égale bonjour espace, monde. Je vais l' imprimer sur la console. Et bien sûr, cela ne ferait que imprimer Hello World. Mais que se passe-t-il si je voulais que Hello et World soient sur des lignes différentes ? Eh bien, je peux utiliser une barre oblique avant n maintenant ça devient orange. C'est parce que cette séquence connue sous le nom séquence d'échappement pour la barre oblique n va être un saut de ligne. Pour le prouver, je peux le faire rapidement Shift Shift et FTN. Ici, nous voyons Hello World sur la ligne suivante. Une autre est la barre oblique n, qui va être un onglet. Par exemple, après avoir ajouté une nouvelle ligne, je peux maintenant ajouter un nouvel onglet. Et je peux refaire ça. Ici, nous voyons Hello world, mais le monde est maintenant indenté une fois par un caractère de tabulation. Nous pouvons également faire deux barres obliques, qui ne deviennent qu'une seule barre oblique. En raison des heures, nous ajoutons une barre oblique. Il va supposer qu'il s'agirait d'un personnage d'échappement ou d'une séquence d'échappement. Mais si je voulais une barre oblique et la chaîne, je n'ai pas eu à échapper à cette barre oblique en ajoutant simplement 200 mots de bureau. Je peux ensuite exécuter ça. Ici. Nous voyons maintenant une barre oblique dans la chaîne. Alors qu'au préalable, il va supposer que nous allons essayer de nous échapper avec un W majuscule, ce qui ne veut vraiment rien dire. Il va donc nous faire une erreur. Nous pouvons également échapper aux guillemets doubles. Cela deviendra donc une double citation normale. Et la raison en est que les guillemets doubles représentent le début ou la fin d'une chaîne. Si je devais simplement ajouter une double guillemets ici, ne saurai pas que cela fasse partie de la chaîne. On pense plutôt que nous essayons de faire une variable dans la chaîne actuelle. Si je suis allé dans le monde pour être entre guillemets, je peux ajouter les guillemets doubles, mais je dois y échapper en y ajoutant une idée d' avance. Maintenant, cela semble un peu déroutant. Je vais donc remplacer toutes les séquences d' échappement précédentes par un simple espace. Maintenant, je peux lancer ça et nous devrions voir Hello World, mais le monde est enroulé entre guillemets doubles. Il existe maintenant un certain nombre d'autres caractères de séquence d'échappement que vous pouvez utiliser, mais ce sont de loin les plus courants. Vous allez voir. 28. Le cours de calcul et les chiffres aléatoires: Jetons un coup d' œil au cours de mathématiques. Et il y a plusieurs choses différentes que nous pouvons faire en ce qui concerne les opérations mathématiques de base. Le premier exemple consiste à obtenir la valeur absolue d'un nombre, ce qui va simplement convertir un nombre négatif en nombre positif. Mais plus techniquement, cela va compter la distance entre ce nombre et 0. Je vais imprimer des maths avec un majuscule M dot abs, ce qui représente une valeur absolue. Et ici, nous pouvons voir que nous pouvons transmettre un certain nombre de valeurs numériques différentes. Dans ce cas, nous pouvons passer en dix positifs. Je suis allé copier et coller ça et passer en négatif dix. Et puis je peux faire ça avec Shift et FTN. Et ici, nous voyons de l' étain dans les deux cas. Donc, en termes simples, cela convertira simplement un nombre négatif en nombre positif. Je vais aller de l'avant et commenter cela. aller de l'avant, je peux imprimer un point mathématique minimum. Et cela va prendre en compte deux nombres du même type, ce qui renverra la valeur minimale entre eux. Par exemple, je peux passer en 107, allant également imprimer math.max, ce qui est un concept similaire, mais nous retournerons la valeur maximale entre eux. Je peux également en retourner 107 ici. Donc, si je l'exécute la première fois, nous en aurons sept car c'est la valeur minimale. Mais la deuxième fois, nous allons en avoir dix parce que c'est la valeur maximale. Maintenant, si nous parlons de points mathématiques et que nous passions en revue toutes ces opérations, il y a un certain nombre d'opérations mathématiques différentes. Par conséquent, vous connaissez peut-être votre expérience en mathématiques à l'école. Mais quelques exemples plus basiques seront le plancher, qui va essentiellement arrondir le nombre vers le bas. Et il scellera également, ce qui augmentera un nombre. Par exemple, je peux passer en 0,2. Je peux envelopper ça à l'intérieur de l' impression ici. Ensuite, je peux aussi imprimer Math.Floor et je peux passer en 0,9. Maintenant, si je l'exécute dans notre console, nous allons en voir un et aussi 0. Cela va s'arrondir, quoi qu'il arrive, peu importe s'il est inférieur à cinq. Et il va arrondir, quoi qu' il arrive, peu importe si elle est supérieure ou égale à cinq. Une autre chose que je voulais vous montrer, c'est comment générer un nombre aléatoire. Il y a deux façons de le faire. Il y a une façon plus ancienne que vous allez probablement la voir derrière un moment dans le travail avec d'autres codes sont en train de suivre d'autres tutoriels. Et il y a un moyen plus récent. L'ancienne façon, je peux dire int random est égal au nouveau aléatoire avec une parenthèse R majuscule ici à la presse Alt et Entrée pour importer cela, je pourrais alors dire NextInt. Je peux ensuite imprimer au hasard sur la console. Donc, si je lance ça, on va avoir un numéro aléatoire. De toute évidence, cela va générer un nombre aléatoire, mais ce n'est pas nécessairement ce que nous voulons. La plupart des fois, nous voulons quelque chose entre 010, c'est juste 0100, des choses comme ça. Nous pouvons donc passer un entier ici. Par exemple, dix, dirigez-nous. Il va maintenant générer un nombre aléatoire compris entre 09. Mais si nous voulions un à dix, nous pouvons simplement en ajouter un à la fin. Donc, si je refais ça, nous en voyons deux. Je ne sais pas si je continue à courir ça, on va avoir votre numéro aléatoire entre 110. C'est l'ancienne façon de le faire. Il existe une nouvelle façon de procéder. Donc le nombre aléatoire savait, je pourrais dire int aléatoire égal thread, point aléatoire local, point actuel suivant int. Et cela fonctionne exactement de la même manière qu'avant. Et aussi avec l'ancienne et la nouvelle façon de faire ce week-end, générez d'autres valeurs aléatoires, par exemple booléennes. Si nous voulions une valeur aléatoire vraie ou fausse, qui apparaîtra de temps en temps. Vous pouvez utiliser le booléen suivant. Vous pouvez obtenir ensuite du bélier, des doubles et d'autres choses comme ça. Mais par exemple, ici, nous pouvons passer un int, puis la limite sera dix, et nous en ajouterons un à la fin. Et je peux ensuite imprimer au hasard sur la console. Voici donc deux façons différentes de générer des nombres aléatoires au sein de votre programme Java. 29. Variables de caractères primitifs et de référence: Cette vidéo va être un peu plus avancée que les vidéos précédentes. Nous allons en savoir plus sur les variables primitives par rapport aux variables de type référence et comment certaines variables sont stockées en mémoire. Je vais donc minimiser mon projet ici. Nous avons donc plus de place pour ces diagrammes. Ici, nous avons la pile et ici nous avons le tas. Il s'agit de deux endroits différents où les informations peuvent être stockées dans la mémoire de votre ordinateur. Nous commencerons par parler de valeurs de type primitif. Par exemple, je pourrais dire que le nombre int est égal à dix. C'est ce qu'on appelle une valeur primitive de type evalue stocke généralement des informations de base. Toutes les valeurs de type primitif sont stockées directement sur la pile, et cela va de bas en haut. D'autres exemples seraient booléens. Je peux dire que la programmation est vraie ? Je peux alors avoir une lettre char égale à a. Je peux avoir un double, je peux appeler ça pi. Et donc c'est égal à 3,14159. Et voici les principales valeurs de type primitif que vous allez voir. Laissez-moi y retourner. Laissez-moi en supprimer quelques-uns et revenons à notre numéro. Mais que se passe-t-il si je devais attribuer un nombre égal à la valeur du numéro un ? Par exemple, le numéro deux égal au nombre le plus gras créera toujours une valeur entièrement nouvelle sur la pile. Le numéro deux est désormais égal à la valeur du nombre. Que se passerait-il si je modifiais la valeur du numéro un qui affecte le numéro deux, je vais imprimer le numéro. Et puis, à la ligne suivante, je vais imprimer le numéro deux. Avant cela, je vais dire que le nombre est égal à 15. Ce qui va se passer ici, c'est parce qu'il s' agit de deux valeurs distinctes. numéro deux ne sera pas du tout affecté. Cela va donc imprimer 15 puis dix. Pour le prouver, je peux l' exécuter avec Shift et FTN. Nous voyons ici 1510. types primitifs auront donc leur propre valeur individuelle sur la pile, même si nous l'affectons à une variable existante. Cela va simplement créer une autre variable dans la mémoire de votre ordinateur et lui attribuer cette valeur. Cela signifie que la ligne huit va créer un entier distinct qui n'a aucune corrélation avec cette ligne numéro sept, à part le fait qu'ils partagent la même valeur. C'est bien, mais qu' est-ce qu'un type de référence ? Et alors que le tas utilisé. Je vais donc laisser tout ce code ici et je vais créer un tableau d'entiers. Je peux dire que les nombres int sont 51015. Et cela va créer quelque chose à la fois sur la pile et sur le tas. Mais les valeurs 51015 sont stockées sur le tas. Et les nombres variables vont être stockés sur la pile. Mais cela ne fera que stocker quelque chose connu sous le nom de pointeur. Les détails exacts sur le fonctionnement des pointeurs en coulisses ne sont pas trop importants lorsque vous travaillez avec Java, car Java gère beaucoup de choses pour nous. Mais cela va simplement pointer vers la valeur réelle qui a été stockée sur le tas. Par exemple, je peux créer un autre tableau ici. Je peux appeler cet exemple. Je peux définir cela comme étant égal à des nombres. Ce qui se passe ici, ce sont nos valeurs de tableau 51015. Il n'existe toujours qu'une seule fois dans la mémoire de notre ordinateur. Et ces trois valeurs sont stockées dans le tas sous forme de tableau. Mais les variables, nombres et l'exemple sont stockés sur la pile, mais ce sont désormais des pointeurs pointant vers le tableau d'entiers. Cela signifie que si nous modifions 510 ou 15, nous verrons réellement ce changement quelle que soit la variable à laquelle nous essayons d'accéder, qu'il s'agisse de nombres ou d'exemples. Pour le prouver, je peux dire que les chiffres, l'indice 1, qui sera le dix ici, est égal à 11. Je peux ensuite imprimer l'index des nombres1. Et puis je peux imprimer l'exemple d'index un. Je peux le faire avec Shift et FTN. Nous en voyons ici 11 dans les deux cas. En effet, ces trois valeurs sont stockées sur le tas une seule fois. Ensuite, le tableau de nombres et l'exemple de Ray vont simplement pointer vers cette valeur. Cela signifie que nous avons deux variables distinctes que nous voyons ici lors de l' exécution de votre code, mais que les valeurs ne sont stockées qu'une seule fois à l'intérieur du tas. Et c'est une différence entre les primitifs et les types de référence. Les types de référence n'auront leurs valeurs qu'une seule fois dans le tas avec un pointeur sur la pile. Mais les types primitifs sont si simples que nous pouvons simplement stocker les valeurs sur la pile. Donc je peux dire que int num1 est égal à cinq, int num2 est égal à dix. Et puis je vais appeler une fonction d'ajout, qui fera ici dans une seconde, et je passerai en 510. En dehors de notre fonction principale, je peux dire public, statique int add, int num1, int num2. Ici, je peux retourner num1 plus num2. Ce qui va se passer ici, c'est que lorsque nous transmettons 510, il va en fait créer deux autres variables sur la pile appelées num1 et num2 attribuent les mêmes valeurs exactes que les arguments que nous sommes Je passe juste ici. Pour le prouver, après notre fonction d'ajout, je vais imprimer num one avec une virgule puis num2. Mais dans notre fonction d'ajout, je vais dire que num1 est égal à dix. Maintenant, si je fais ça, on voit maintenant 510. Mais nous avons en fait changé num un égal à dix. Et en fait, la somme de la fonction d'ajout. Si je devais mettre cela à l'intérieur d'une déclaration imprimée, cela va imprimer 20. Donc, si je cours ce temps plus chaud avec les 20 dans la console et ensuite 510, décomposez cela ligne par ligne juste au cas où cela serait déroutant pour vous. Nous avons d'abord créé deux variables stockées sur la pile, 510. Nous pensons que nous sommes allés imprimer la somme, en passant par 510. Notez que nous ne changeons num1, num2 à aucun moment. Il est important de noter que lorsque nous atteignons la ligne dix, lorsque nous passons num1 et num2 à la console. Ces deux variables ne changent pas du tout. Une fois que nous appelons réellement la fonction add, nous passons 510, ce qui va créer deux autres variables stockées sur une pile. Et il se trouve que nous modifions simplement le premier chiffre ou le premier argument ici, à la valeur de dix. qui signifie essentiellement que nous ajoutons dix à quel que soit le deuxième argument, qui en l'occurrence, c'est dix, et c'est pourquoi nous en avons 20 ici. Maintenant, l'important ici est que nous modifions le tout premier argument transmis, mais il y a un tout nouveau nombre entier. Les types primitifs vont simplement passer dans leur valeur. Et il ne s'agira essentiellement que d'une copie de cette valeur. Toute modification apportée au sein de la fonction ne l'affectera pas réellement dans la fonction qui l'a initialement appelée. En gros, nous modifions notre premier argument ici. Mais cela ne modifie rien de notre fonction principale. C'est parce qu'il s' agit de types primitifs et que la valeur est transmise. Mais que se passe-t-il si nous transmettons un tableau d'entiers ? Par exemple, nous avons un tableau avec seulement deux valeurs. Au lieu de num1 et num2, je peux dire que le nombre int est égal à 510. Je pourrais ensuite passer en chiffres. Et puis je vais consigner l' index des nombres 0 et l'index des nombres un. Maintenant, nous avons un problème avec notre fonction car elle coupe s'attendait à deux entiers différents. Mais au lieu de cela, je veux simplement ajouter deux nombres ensemble à partir d'un tableau de nombres, comme je dis int, crochets, nombres. Ensuite, je peux renvoyer des nombres, indexer 0 plus les nombres et X1. ******* exécutez ceci avec Shift et F11. Ici, nous devrions voir à la fois les numéros imprimés et chaque numéro individuel comme nous le voyons ici. Mais que se passerait-il si je change l'index des nombres 0 à dix, qui est à l'origine cinq dans ce tableau, gardez à l'esprit que ce tableau n' est pas modifié du tout. Et nous passons le premier élément de la baie ici le premier élément de la baie dans ce journal de console. Donc, si je lance cela, nous disons maintenant que 20 imprimés comme une somme Kf modifient le premier indice qui a l'indice 0, qui est cinq, par la valeur de tan ici. Ce qui signifie que nous imprimons dix plus dix. Mais l'index des nombres 0 imprimé sur la console est maintenant modifié. En effet, la référence ou le pointeur vers ce tableau est transmis en argument, non les valeurs réelles elles-mêmes. Donc, lorsque nous allons à Modify numbers index 0, il s'agit en fait de modifier le même tableau exact que celui que nous avons créé en ligne cinq, car nous passons simplement ce pointeur qui se trouve sur une pile qui indique simplement les valeurs réelles qui sont stockées sur le tas. Et c'est une différence importante entre les primitifs et les types de référence lorsque vous travaillez avec des fonctions, il est important de savoir que lorsque vous modifiez quelque chose en tant qu'argument, par exemple, int number ici, qu'il peut ou non modifier cela avec le reste de votre programme selon qu'il s'agit d'un type primitif ou de référence. Aujourd'hui, beaucoup de ces concepts sont nouveaux et je sais que c'est probablement l'un des concepts les plus déroutants en matière de programmation. Si vous débutez dans la programmation. Donc, si vous rencontrez des problèmes, je vous suggère de regarder cette leçon nouveau et d'essayer de me concentrer sur la pile et le tas représentations visuelles pour tout expliquer. 30. Les bases de la programmation orientée objet: Nous allons maintenant nous plonger dans un concept connu sous le nom de programmation orientée objet. Et une façon courte de dire que c'est cerceau ou OOP. Et c'est certainement là que Java devient beaucoup plus intéressant et que nous pouvons construire des programmes réels avec lui. Mais tout d'abord, parlons de ce qu' est la programmation orientée objet ? Eh bien, il s'agit d'un concept qui n' est pas exclusif à Java. D'autres langages de programmation ont également cette constante. C'est essentiellement là que nous pouvons représenter des objets du monde réel dans notre code. Et dans ces prochaines vidéos, je vais expliquer ce que signifient d'autres mots clés, tels que classe et statique, et d'autres mots-clés que j'ai mentionnés que j' expliquerai plus tard. Jetons rapidement un coup d'œil à ce qu' est une classe par rapport à un objet. La classe va essentiellement être le code réel qui représente le Blueprint d' un certain type de fonctionnalité ou d'un certain type d'objet. Maintenant, quand je dis « plan directeur », je veux que vous pensiez à un plan de la Maison. Par exemple, si vous voyez un ensemble de maisons qui se ressemblent, il n'y en a qu'un seul, un seul plan qu'elles copient et collent. Et chaque maison sera son propre objet. Une maison va être un objet ou le plan sera la classe. Nous pouvons donc avoir une mini-instance de chaque classe individuelle et ce sont des objets. Ce qui a réellement utilisé cet exemple de maison dans un véritable exemple de programmation dans notre paquet principal ici, je peux cliquer avec le bouton droit de la souris. Je peux aller à New, puis à la classe Java ici. Je vais nommer cette maison, mais je vais utiliser une notation Pascal, qui signifie essentiellement que nous mettons en majuscule la toute première lettre de chaque mot. Si j'avais un exemple de maison, le H et le E seraient tous deux en majuscules. Mais dans ce cas, je veux juste créditer la classe « house ». Allez-y et appuyez sur Entrée et il devrait s'ouvrir automatiquement. Et maintenant, dans cette classe ou dans ce Blueprint, nous pouvons ajouter différentes propriétés. Qu'est-ce qu'une propriété ? s'agit essentiellement de variables et de méthodes spécifiquement définies dans cette classe de maison. Et cela nous aide à accéder à différentes valeurs ou à travailler avec différentes fonctionnalités dans le contexte d'une maison. Plongez beaucoup plus en détail sur ce qui serait réellement dans un cours de maison au cours des prochaines vidéos. Mais d'abord, jetons un coup d'œil à la façon dont cette classe de maison peut réellement être utilisée dans notre classe principale ici. Je vais aller de l'avant et supprimer certains de ces commentaires. Je peux maintenant dire maison avec un H majuscule et ici nous voyons qu'il va essayer d'importer à partir de notre système de fichiers local. Je peux aller de l'avant et appuyer sur Entrée, puis nous pouvons aller de l'avant et nommer notre variable. Dans ce cas, je dirai maison avec un h minuscule, je vais nous assigner à égal à une nouvelle maison. Maintenant, le nouveau mot-clé fait partie de la programmation orientée objet et des classes, mais les détails seront expliqués ultérieurement. Pour l'instant, nous pouvons penser que c' est simplement une nouvelle maison, une classe de maison juste ici. Ce sera le plan directeur, mais maintenant nous avons créé une véritable instance de notre maison. Prenons un exemple très simple en faisant imprimer la maison helloworld. Je peux dire « vide public ». Et remarquez que nous n'avons pas de statique ici. Je vais expliquer la différence entre les méthodes statiques et non statiques dans quelques vidéos. Mais pour l'instant, n'incluez pas de statique dans cet exemple. Si public, nul, imprimé. Et puis je n' aurai aucun paramètre. Je vais simplement imprimer Hello World sur la console. Maintenant, si je survole cela, nous voyons que la méthode d' impression n'est jamais utilisée. Allons de l'avant et essayons de l'utiliser. En revenant dans notre classe principale ici, nous avons accès à cette maison. Je peux dire que House presse une période. Il va y avoir une liste déroulante contenant toutes les propriétés et méthodes disponibles auxquelles nous pourrons accéder. Dans ce cas, nous avons accès à notre fonction d'impression. Je peux aller de l'avant et appuyer sur Entrée, et je vais lancer ça. Et ici, nous voyons Hello World dans la console. Je vais aller de l'avant et renommer cette variable. Je peux cliquer n'importe où dans le nom de la variable, et je peux maintenir la touche Maj enfoncée et appuyer sur F6 en même temps. Nous pouvons maintenant aller de l'avant et changer cela. Je vais changer ce nom pour ma maison avec un H majuscule et un m minuscule. Maintenant, je vais créer une toute nouvelle variable. Comme je l'ai dit, House. Votre maison est égale à une nouvelle maison. Et ces deux variables n'ont rien en commun à part le fait qu'elles ont été créées avec la même classe. Fondamentalement, ils sont voisins l'un de l'autre, mais ce n'est pas la même maison. Si votre voisin a une maison similaire à la vôtre, cela ne signifie pas que c'est votre maison. Si c'est juste une maison similaire basée sur le même plan. Par exemple, je peux dire votre empreinte de points maison. Et je peux aller de l'avant et faire ça. Et maintenant, nous allons voir deux instances de HelloWorld et de notre console, comme nous le voyons ici. C'est la base même des classes et comment créer des objets autour de ces classes. Et au cours des prochaines vidéos, nous allons plonger beaucoup plus loin dans la programmation orientée objet, où nous pourrons créer un objet maison fonctionnel qui représente vraiment un véritable objet. maison dans nos programmes. 31. Constructeurs: Nous allons maintenant parler d'un concept appelé constructors, qui sera essentiellement une méthode intégrée dans chaque classe exécutée ou invoquée chaque fois qu' une nouvelle instance de cette classe est créé. Il existe en fait un constructeur par défaut dans chaque classe. Que nous en créions un nous-mêmes ou non, il en aura automatiquement un. Donc, un constructeur, nous allons regarder quelque chose comme une méthode, mais légèrement différent parce qu'il n'allait pas avoir de type de retour, comme le vide ici. Et le nom du constructeur doit également être le nom exact de la classe. Je peux donc dire maison publique avec une majuscule H. C'est maintenant connu sous le nom de notre constructeur. Pour le prouver, je vais imprimer une nouvelle maison qui a été faite. Et je vais l'exécuter dans notre console. Ici, nous voyons qu'une nouvelle maison a été créée parce que nous avons créé une nouvelle instance de notre classe de maison ici même comme variable ma maison. Et cela a fait fonctionner le constructeur dans notre imprimerie Hello World. Mais ensuite, nous créons une autre maison, ce qui signifie que l'autre constructeur est une rampe. Et puis, bien sûr, nous imprimons à nouveau Hello World. Désormais, un constructeur ne peut rien renvoyer, mais il ne peut pas prendre en compte différents paramètres. Par exemple, je peux avoir un nom de propriétaire de chaîne. Ensuite, je peux dire qu'une nouvelle maison a été construite. Le propriétaire est comme un nom de propriétaire additionnel. Nous avons maintenant deux problèmes connexes ici. C'est parce que dans notre classe principale, nous ne transmettons aucun argument. Par exemple, ici, il peut passer un Alex. Bien sûr, vous pouvez ajouter votre propre nom. Et ici, je vais passer à Bob. Bien sûr, vous pouvez ajouter n'importe quel autre nom que vous voulez. Donc, si je l'exécute, nous pouvons maintenant jeter un coup d'œil à notre console. Et ici, nous voyons qu'une nouvelle maison a été construite. Le propriétaire est Alex. Et c'est parce que nous avons créé une nouvelle instance de classe de maison ici même. Et nous avons passé un ALEKS en tant que chaîne à notre constructeur. Et puis, bien sûr, lorsque nous créons une maison de Bob, nous voyons que le propriétaire est Bob et la console. Maintenant, à l'instar des méthodes, les constructeurs peuvent être remplacés, sorte que nous pouvons transmettre différents types de valeurs dans les paramètres. Comme je l'ai dit, maison publique. Je ne pouvais pas dire les planchers. Ici, j'ai pu imprimer une nouvelle maison qui a été faite. Il a que je peux ajouter sur les planchers et cela peut ajouter sur les planchers de ficelle. Et je vais aussi mettre des parenthèses autour du S parce que nous pourrions passer dans une maison à un seul étage. Nous avons donc maintenant deux constructeurs différents, qui vont être exécutés à des moments différents. Par exemple, sauvegardez la maison de Bob. Au lieu de passer à Bob, je vais en faire une maison de deux étages. Vous remarquerez peut-être que IntelliJ va automatiquement remarquer qu'il s'agit maintenant du paramètre planchers. Ce ne sera pas le propriétaire nommé comme il est dit ici. C'est parce qu'il comprend que nous écrasons le constructeur pour qu'il transmette deux types de variables différents. Et ici, nous passons un entier. Cela signifie donc que nous allons utiliser ce constructeur ici. Donc maintenant, si je lance ça et si nous regardons notre console, nous voyons maintenant que la première instance de notre maison va s'imprimer. Le propriétaire est Alex. Mais la deuxième instance de notre maison va imprimer un a deux étages. C'est parce que nous utilisons les différents types de constructeurs qui ne transmettent que des entiers. Dans cet exemple, nous venons d' imprimer du texte, mais dans de vrais cas d'utilisation, que nous allons jeter un coup d'œil dans quelques vidéos. Nous allons essentiellement les utiliser comme fonctions de configuration pour nous assurer que tout le reste est configuré et fonctionnera correctement pour que notre maison fonctionne correctement. 32. Le mot-clef et les propriétés: Nous allons maintenant examiner le, ce mot-clé, ainsi que la façon de créer différentes propriétés qui ne seront que des variables à l'intérieur de notre classe. Je vais me débarrasser de ces commentaires ici. Et je vais également me débarrasser de ces déclarations d' impression au sein de nos deux constructeurs. Maintenant, à l'intérieur de notre classe, mais en dehors des fonctions, je vais créer quelques variables différentes. Par exemple, je pourrais dire chaîne privée avec un S majuscule, le nom du propriétaire. Je ne pourrais pas dire des étages privés. Et la partie privée de cela, ainsi que le public sur certaines de ces méthodes seront expliqués dans une prochaine vidéo. J'ai déjà démontré comment surcharger les constructeurs. Mais dans ce cas, nous voulons simplement un seul constructeur avec les deux informations transmises. Ici, je peux dire « int floors ». Et maintenant à l'intérieur de cela, je vais vouloir attribuer le nouveau nom de propriétaire et les nouveaux étages des paramètres à nos variables locales. Parce que ces deux variables sont différentes ici , alors nos paramètres sont ici. Mais avant de le faire, nous avons deux problèmes connexes car si je reviens en arrière, nous utilisons maintenant une syntaxe incorrecte pour un constructeur. Ici, disons que ma maison a deux histoires, moins de dire qu'il s'agit toujours d'une maison de Bob, que vous pouvez bien sûr utiliser n'importe quelle ficelle que vous voulez dessus, mais c'est aussi deux histoires. Donc, en revenant en classe de maison, nous n'avons plus aucun problème. Mais comment allons-nous définir le nom du propriétaire en ligne égal au paramètre transmis. Parce que, bien sûr, ils portent le même nom exact. Dire que le nom du propriétaire est égal au nom du propriétaire ne fait vraiment rien. Il ne modifie pas la ligne pour quelque raison que ce soit, car cela va faire référence à la variable la plus locale de la portée, qui dans ce cas sera simplement le paramètre sous le nom ici. Techniquement, nous pourrions maintenant modifier les noms de ces variables, donc elles ne sont pas exactement les mêmes, mais ce n'est pas la solution la plus correcte. solution la plus correcte dirait simplement que ce nom de propriétaire de point est égal au nom du propriétaire et que ces planchers de points équivaut à la force. Que se passe-t-il réellement ici ? Eh bien, cela représente l'objet actuel. Chaque fois que ce constructeur est dirigé pour ma maison, qui porte le nom de propriétaire Alex et deux étages. Le, ce mot clé ici va faire référence à l' objet My House ici. Lorsque nous créons la maison de Bob, cet objet ici va faire référence à l'objet de votre maison ici même. Le, ce mot-clé ici va représenter l'objet actuel utilisé pour cette classe. Pour le prouver dans notre fonction d'impression, je peux dire que cette maison est la propriété de. Je pourrais ensuite imprimer ce nom de propriétaire de points. Et il a plus cette force de plancher de points. Bien sûr, je vais mettre des parenthèses autour du S au cas où vous voudriez passer dans une maison à un seul étage. Maintenant, nous utilisons toujours cette fonction d'impression, comme vous pouvez le voir ici. Je vais aller de l'avant et lancer ce programme. Et ici, nous voyons que dans cette maison appartient à Alex et elle a deux étages. Nous voyons également que cette maison appartenait Bob et qu'elle a deux étages. Les noms et le nombre d'étages seront enregistrés localement. Juste ici. Nous n'accédons pas aux paramètres que nous avons ajoutés ici, car ils sont rebondis qui ne sont accessibles que dans le cadre du constructeur. Nous avons donc nos propres paramètres ou nos propres variables au sein de cette classe. Nous les affectons chaque fois que nous créons l'objet à partir du constructeur. Ensuite, nous pouvons accéder à ces variables n'importe où dans cette classe. Par exemple, dans cette fonction d'impression en indiquant ce nom de propriétaire de point et ce truc guerres. Maintenant, techniquement dans ce cas d'utilisation de la fonction d'impression, le, ce mot-clé est facultatif car par défaut, il supposera que nous allons utiliser l'instance actuelle de la classe. Je peux donc aller de l'avant et les supprimer. Et si je réexécute ça, ça fonctionnera exactement de la même façon. Techniquement, ce n'est pas une bonne pratique, car le fait de dire ce .name et les planchers de bureau indique très clairement que nous essayons d'accéder aux variables stockées dans la classe, mais cela est techniquement facultatif dans ce cas de la fonction printf. Mais notre constructeur doit être requis car ils ont les mêmes noms de variables exacts que notre paramètre. Pour être très clair, quelles valeurs nous affectons, quelles variables. On peut dire ce point sur son nom pour faire référence à notre chaîne privée locale ici. Et ce point floors qui font référence notre entier privé local ici. Ensuite, attribuez-les au nom du propriétaire au périmètre. Et le paramètre des planchers. 33. Encapsulation, abstraction, Getters et Setters: Plongeant plus loin dans la programmation orientée objet, nous allons maintenant introduire deux autres concepts qui vont devenir un peu plus déroutants, mais j'espère pouvoir les expliquer assez bien pour que vous puissiez pleinement comprendre. Ces deux concepts vont être connus sous le nom encapsulation et d'obstraction. Mais nous examinons également les getters et les setters, qui sont en quelque sorte un exemple d'abstraction. L'encapsulation sera essentiellement un concept de programmation orientée objet lequel nous voulons que toutes nos fonctionnalités soient encapsulées en un seul endroit. Et même une classe elle-même est un exemple d'encapsulation. Par exemple, nous avons ici une classe de maison. Donc, toutes les fonctionnalités que nous aurons concernant une maison, telles que le nombre de portes, le nombre d'étages qu' elle possède, différentes fenêtres et pièces et d'autres choses du genre. En gros, tout ce qui a trait à une maison doit être enfermé ou encapsulé à l'intérieur de cette classe de maison. Maintenant, un autre concept est quelque chose comme un médicament ou une pilule où toutes les fonctionnalités sont encapsulées à l'intérieur d'une seule pilule. Cela signifie que les utilisateurs de ce cours ou les personnes qui prennent le médicament n'ont pas nécessairement à connaître le fonctionnement intérieur, tout. Il suffit de voir l'objet extérieur et savoir que tout est encapsulé à l'intérieur. C'est plutôt un concept qui ne peut pas vraiment être démontré clairement, mais il est important de comprendre que lorsque vous écrivez votre propre code Java, vous voulez que tout soit capsulé à l'intérieur de sa propre classe. Maintenant, le concept suivant est l'abstraction, qui ressemble légèrement à l'encapsulation. Mais en gros, cela signifie que vous voulez uniquement que l'utilisateur qui utilise la classe ait accès aux éléments dont il a réellement besoin. Par exemple, je vais changer ces propriétés privées ici pour devenir publiques. Et je vais expliquer ce qui est privé ou public dans cette vidéo. Mais pour l'instant, il suffit de suivre et de les transformer en public. Et maintenant, à l'intérieur de notre dossier principal, après avoir créé la première maison, mais avant de l'imprimer, je peux dire mon point de maison. Nous avons maintenant accès à toutes les propriétés et méthodes de cette classe. Et nous pouvons voir le nom du propriétaire et les étages. Je peux changer le nom du propriétaire en Bob. Disons que Bob vient de détourner ma maison, par exemple. Et si je fais ça, nous voyons maintenant Bob deux fois dans le causal, comme nous le voyons ici. Il s'agit maintenant d'une mauvaise pratique techniquement. Et je vais retransformer ces variables en privées en utilisant Control Z ou Command Z sur un Mac. Et maintenant, nous voyons un problème connexe. Si je survole ici, il est dit que le nom du propriétaire a un accès privé à l'intérieur de com dot usé off keys dot house. Je vais donc supprimer cette ligne de code ici. Et maintenant, nous ne pouvons pas accéder directement à qui appartient la maison sans être réellement à l'intérieur de la maison. Par exemple, je pourrais dire que ce nom de point est égal à Bob, et cela fonctionnerait très bien. Et c'est parce que la propriété privée ici est connue sous le nom de modificateur d'accès. Cela va restreindre l'accès de certaines choses lorsqu'il s'agit de différentes propriétés et méthodes. Dans ce cas, une méthode privée ou une propriété privée signifiera que la seule chose qui puisse y accéder ce sont des objets de la même classe exacte. C'est pourquoi nous sommes en mesure d'y accéder ici , ainsi qu'ici. Même si c'est privé, nous sommes toujours à l'intérieur de la classe. C'est aussi la raison pour laquelle nous avons eu l'erreur ici. Ce que j'essaie d'y accéder parce que ne sommes pas à l'intérieur de la classe de la maison. Nous sommes à l'intérieur de la classe de cours Warnock Keys ou quel que soit le nom que vous avez donné à votre classe. Maintenant, le public, comme vous pouvez probablement le deviner, signifie que tout peut y accéder en accédant à son propre objet. Par exemple, nous avons une impression publique vide. Cette méthode est publique, qui signifie que si nous avons un objet pour cette classe, par exemple, ma maison ou votre maison, nous pouvons accéder à la méthode d' impression qui s'y trouve. Maintenant, vous vous demandez peut-être pourquoi ne pas accéder directement à tout ce que nous voulons. Pourquoi restreindre certains accès ? Eh bien, c'est tout le concept derrière l' abstraction qui va essentiellement prendre toutes les fonctionnalités intérieures et le fonctionnement de la maison et ne vous donner accès qu'à ce qui est nécessaire pour que la Maison accomplir son travail. Maintenant, dans certaines situations, vous pouvez donner un accès intérieur à certaines choses à l'aide de getters et de setters, certaines choses à l'aide de getters et de setters, que nous examinerons ici dans un instant. Mais généralement, en règle générale, vous ne devez donner accès qu' à ce qui est absolument nécessaire. Et vous ne devez jamais donner un accès direct à des variables comme celle-ci directement. Au lieu de cela, vous devez toujours utiliser des getters et des setters. Examinons rapidement comment cela fonctionne. Je peux dire public, ficelle. Maintenant, il va remplir automatiquement le concept de get owner name, qui est en fait ce que je vais utiliser ici. La raison pour laquelle je le savais, c'est parce qu'elle va renvoyer une chaîne. Et chaque fois que je tape Git, il va supposer que c'est créer quelque chose connu sous le nom de méthode getter. Fondamentalement, il s'agit simplement d'une méthode qui renvoie une propriété privée. Dans ce cas, je peux renvoyer le nom du propriétaire. Maintenant, je peux accéder au nom du propriétaire qui est privé à partir de cette méthode getter. Nous avons également des méthodes de setter, ce qui est un concept similaire, mais évidemment, nous n'en avons pas la valeur. Au lieu de cela, nous étudions la valeur, comme je l'ai dit, vide public parce que nous ne retournons rien. Définissez le nom du propriétaire ici. Il va y avoir un seul paramètre. Je peux dire le nom du propriétaire de la chaîne. Et puis à l'intérieur de cela, je peux dire que ce nom de propriétaire de point est égal au nom du propriétaire. Maintenant, si je le voulais, je peux aller chez moi, comme je l'ai dit, nom du propriétaire de mon ensemble de points de maison. Je peux passer à Joe. Et si je fais ça, on verra Joe et Bob dans la console. Et en fait, nous voyons Bob deux fois à cause d' une erreur que j'ai commise ici dans la fonction d'impression. À titre d'exemple, j'ai dit que nous pouvons utiliser cela ici. Je vais aller de l'avant et supprimer cela , puis lancer le programme une fois de plus. Et maintenant, nous voyons Joe et Bob dans la console. Il s'agit d'un exemple de méthode getter et de méthode setter. Maintenant, vous vous demandez peut-être pourquoi vous embêter avec l'un de ces getters et setters. Pourquoi ne pas simplement supprimer complètement ces fonctions ici et simplement rendre nos propriétés publiques ? Lorsque j'apprenais la programmation orientée objet pour la première fois, j'avais la même question exacte et j'étais très confus. Pourquoi faire tout ce travail supplémentaire et pour obtenir les mêmes résultats exacts. Mais en écrivant de plus en plus de code au fil des ans, je me suis rendu compte que l'utilisation de getters et de setters est beaucoup plus pratique et cela rend les choses beaucoup plus organisées. Imaginez, par exemple, que nous ayons un très grand projet avec des dizaines de maisons. Oliver, notre projet, et nous voulons changer tous les noms des propriétaires en majuscules. Ou bien, nous voulons consigner tous les noms des propriétaires chaque fois qu'ils sont modifiés ou quoi que ce soit de ce genre. Je souhaite effectuer un certain type de fonctionnalité chaque fois que le nom du propriétaire a changé. Par exemple, nous pouvons dire ici que ce nom de propriétaire est égal au nom du propriétaire point ToupperCase. Et pour rendre les choses encore plus pratiques, nous pouvons modifier une ligne dix ici de ce nom de propriétaire égale à nom pour définir le nom du propriétaire. Transmission du nom du propriétaire. Cela arrivera au constructeur par défaut aura également une majuscule. Si je lance ça, nous devrions voir à la fois sur nos noms et en majuscules. Et si nous avions tout mis en public sans aucun getters ni setters, et que nous avions des dizaines de maisons dans un projet plus vaste, nous devrions passer en revue et changer manuellement tous nos noms en majuscules, ce qui semble très fastidieux et très ennuyeux. Mais parce que nous utilisons les règles d' abstraction correctes et que nous utilisons des getters et des setters avec des propriétés privées ici. Nous avons maintenant la possibilité de modifier facilement certains aspects de notre programme à partir d'un seul changement ici. 34. Héritage: Jetons un coup d'œil à quelque chose connu sous le nom d'héritage. C'est essentiellement là que nous pouvons ajouter ou étendre une autre classe pour lui donner plus de fonctionnalités. Par exemple, je peux faire un nouveau cours Java et je vais appeler cet hôtel. Et je vais agrandir la maison. Comme je l'ai dit, étend la maison. Cela signifie qu' il va hériter de toutes les fonctionnalités de la classe de maison. Mais ensuite, nous pouvons ajouter plus de fonctionnalités et de côté. Par exemple, nous pouvons maintenant spécifier superficie d'un lobbyiste, ou le nombre d'employés, ce genre de choses, que l'hôtel n'a pas de maison, mais une maison va toujours avoir un propriétaire et un certain nombre d'étages dont dispose également un hôtel. Au lieu de faire une classe hôtelière, qui aurait ces propriétés à l'intérieur, nous allons simplement agrandir la maison qui possède déjà ces propriétés. De cette façon, nous n'avons pas à les refaire. Mais nous obtenons cette erreur ici. Si je le survole, il est dit qu'il n'y a pas de constructeur par défaut disponible. Si nous passons à la maison, nous voyons qu'il n'y a pas de constructeur par défaut, ce qui signifie qu'aucun constructeur n' a de paramètres 0. Nous avons donc ces deux paramètres ici, le nom du propriétaire et les étages. Et cela signifie que notre hôtel, qui s'étend à la maison, doit également avoir un constructeur similaire. Je peux donc dire public, hôtel, chaîne, nom du propriétaire, puis int étages. Maintenant, nous obtenons une autre erreur. Si je survole cela, il est dit qu' il n'y a pas de constructeur par défaut disponible. Cela signifie que nous devons utiliser quelque chose connu sous le nom de super méthode. Donc, si j'appelle des super-héros, je pourrais passer le nom du propriétaire et les planchers. Et la super fonction ne sera utilisée que dans les classes qui étendent une autre classe. Cela va simplement appeler le constructeur de la classe que nous étendons dans cette maison de cas. Nous avons donc créé un constructeur hôtelier. Cela va appeler un constructeur de la maison. Par conséquent, nous allons définir les propriétés privées nom du propriétaire et des étages égales aux propriétés que nous passons. Dans ce cas, nous allons simplement passer ceux et ceux du constructeur de l'hôtel. Maintenant, si cela semble déroutant, ne vous inquiétez pas, allons de l'avant et créons une nouvelle instance hôtelière, et cela aura beaucoup plus de sens après cela. Ici, dans notre classe principale, je vais dire hôtel. Mon hôtel est égal à un nouvel hôtel. Nous pouvons ensuite passer chez le propriétaire. Et puis le nombre de planchers, disons dix. Je peux maintenant imprimer le nom du propriétaire de mon point d' hôtel. Mais à l'intérieur de la classe hôtelière, nous n'avons pas du tout de nom de propriétaire. C'est parce que nous continuons d'étendre la classe house, hérite de toutes les fonctionnalités précédentes de cette classe. Par exemple, obtenez le nom du propriétaire. Donc, bien sûr, si je devais exécuter ça, il suffit d'imprimer Alex sur la console. Je ne vais pas vous ennuyer avec ce concept simple. Je suis sûr que vous comprenez cela. Mais examinons plus en détail le fonctionnement ces constructeurs et le fonctionnement de la super méthode. En gros, je passe ALEKS et l'étain comme paramètres dans le constructeur de l' hôtel. Par conséquent, le nom du propriétaire et les étages seront Alex et dix appellent ensuite super, ce qui va appeler le constructeur de la classe étendue. Dans ce cas, c'est la maison. Essentiellement, nous allons appeler cette fonction ici, qui les attribuera à propriétés privées égales à Alex et dix. Nous pouvons maintenant y accéder à l' hôtel s'ils sont publics ou quelque chose qui est connu sous le nom de protection. Jusqu'à présent, nous avons vu des sujets privés et publics. Il y en avait également un autre qui est protégé. Par exemple, à l'intérieur du constructeur. Je ne peux pas imprimer ce nom de propriétaire. Nous voyons dans la liste déroulante ici qu'il n' y a pas d'option. Et aussi si je laisse ça comme ça, on va avoir une erreur. Si je survole cela, le nom du propriétaire a un accès privé. C'est parce que l'accès privé signifie que les seules choses directement dans cette classe peuvent y accéder. Ce n'est pas nécessairement des choses qui étendent cette classe. Si nous voulions que les classes étendues y aient accès, nous pouvons changer de niveau privé pour le protéger. Maintenant, l'erreur disparaît et protéger signifie essentiellement que tout ce qui dans la classe peut l' utiliser ainsi toutes les classes qui étendent cette classe peuvent l'utiliser. 35. Polymorphisme: Parlons maintenant d'un concept connu sous le nom de polymorphisme. C'est essentiellement quelque chose qui signifie beaucoup de formes parce que poly signifie beaucoup et le morphisme signifie formes. Examiner le problème que le polymorphisme résout. Ici, nous avons l'objet de mon hôtel ainsi que votre objet maison et mon objet de maison. Ces deux-là utilisent la fonction d'impression. Et comme l'hôtel agrandit la maison, nous avons maintenant accès à la fonction d'impression. Je peux dire l'empreinte de mon hôtel. Maintenant, si je dirige ça, nous voyons que les maisons appartenant à chaque personne et qu'elles ont tellement d'étages. L'hôtel est toujours dit que les maisons appartenaient. Nous voulons essentiellement remplacer la fonctionnalité exacte de la fonction d'impression au sein de la classe hôtelière. Pour ce faire, jetons un coup d'œil à la classe de maison très rapidement. Notre impression fonctionne comme une impression publique vide. Notre classe hôtelière doit avoir la même fonction exacte. Je peux dire public, nul, imprimé. Et maintenant, pour plus de simplicité, je vais simplement copier et coller la ligne précédente ici. Je peux utiliser Control C sous Windows ou Command C sur Mac. Ensuite, je peux utiliser le contrôle V sous Windows ou Command V sur Mac. Nous obtenons maintenant une erreur car ces deux propriétés sont privées et ne sont pas protégées. Je dois donc utiliser leurs getters correspondants. Je pourrais donc dire obtenir le nom du propriétaire. Nous n'avons pas encore de cadeau pour sa méthode. Donc, si je dis « git floors », il n'existe pas vraiment. De plus, allez-y et faites-en un. Il devrait y avoir assez simple, je suppose qu'un public intègre Flores ici, je peux simplement retourner faux. Nous avons donc maintenant un getter que nous pouvons utiliser. Dans l'hôtel. Nous n' avons plus d'erreur ici. Nous pouvons changer. La maison appartient à deux, l'hôtel est impartial. Maintenant, si je fais ça et que nous regardons notre console, nous voyons ici que l'hôtel appartient à Alex et qu'il a dix étages, ou les objets de la maison précédents disent toujours maison. C'est ce qu'est le polymorphisme, c'est que nous avons de nombreuses formes de la même fonction exacte. Nous avons donc ici une fonction d'impression dans notre maison, et ici nous avons une fonction printf dans notre hôtel. Chaque fois que nous essayons d' accéder à une fonction d'impression, nous allons toujours utiliser la fonction la plus proche de la classe exacte. Par exemple, maintenant que nous avons cette fonction printf, elle va l'utiliser. Mais avant, il ne l'avait pas. Il s'agirait donc de la classe de la maison que nous étendons. Et bien sûr, House avait une fonction printf. Il utiliserait donc cela. Aujourd'hui, c'est également connu sous le nom de concept d'écrasement de méthodes. Maintenant, cela ne doit pas être confondu avec la surcharge de méthode. C'est ici que nous avons deux méthodes du même nom exact, mais peut-être des paramètres différents. Par exemple, je peux dire public, void, print, et comme argument, je peux dire int times. Ici, je vais parcourir un certain nombre de fois en fonction du nombre de fois qui est passé. Je peux dire que pour int a est égal à 0, alors que a est inférieur à fois plus a. Maintenant ici, je peux simplement copier et coller cette ligne ici, ou je peux simplement appeler la fonction d'impression. Maintenant, en revenant à notre classe principale, nous imprimons simplement ceci, mais nous pouvons aussi dire l'impression de points de mon hôtel et passer en cinq. Et maintenant, je peux gérer ça. Et nous voyons ici qu'il est imprimé cinq fois différentes. Bien sûr, nous voyons cinq fois ici. Mais nous avons également cette sixième fois au sommet. Et c'est parce que nous disons ici empreinte de mon hôtel sans aucun argument réel. Il va donc utiliser la fonction printf normale que nous avons créée. Maintenant, nous avons déjà passé en revue la surcharge de méthode. Ce n'est pas vraiment un rafraîchissement. Cela vise simplement à préciser que le remplacement de la méthode est différent de la surcharge de méthode. De toute évidence, ils peuvent être confondus parce qu'il y a des mots similaires, mais ce sont des concepts différents comme vous pouvez le voir ici. 36. Le mot-clef « statique »: Jusqu'à présent, nous avons différentes propriétés au sein de nos classes, par exemple le nom du propriétaire et les étages. Et ceux-ci seront liés à chaque objet que nous créons. Par exemple, ma maison, votre maison et mon hôtel. Je ne vais pas introduire un nouveau mot-clé, qui est le mot-clé statique, que vous pouvez voir ici. Cela ne va fondamentalement pas lier les propriétés aux objets individuels, mais plutôt les liens entre les propriétés et la classe elle-même. Maintenant, chaque maison est différente, il m'est donc difficile de décrire un exemple statique en ce qui concerne les maisons. Nous allons donc utiliser des oiseaux à la place. Je peux cliquer avec le bouton droit sur la nouvelle classe Java. Et je vais nommer ça un oiseau. Disons maintenant que chaque oiseau aura son propre nom. Je peux donc dire type de chaîne privée. Et puis ici, je peux dire oiseau public chez un constructeur, on peut avoir une chaîne ici appelée type. Ensuite, dans le constructeur, nous pouvons attribuer le type de variable locale égal aux paramètres transmis par le constructeur. Ici, je peux dire que ce type de point est égal au type. Tout semble assez basique jusqu'à présent, allons dans ma classe principale et je vais les commenter. Nous les décommenterons dans les prochaines vidéos lorsque nous reviendrons à l'exemple de la maison. Mais encore une fois, la statique est beaucoup plus facile à comprendre et à expliquer sans utiliser de maisons. Ici, je peux dire oiseau, oiseau est égal à un nouvel oiseau. J'ai accès à un oiseau, mais maintenant j'ai le laissez-passer dans un certain type. Par exemple, je peux passer dans un corbeau, et maintenant nous avons accès à un oiseau. présent, tout semble assez standard. Désormais, les propriétés statiques telles que les variables et les méthodes arrivent une fois que vous voulez faire rebondir quelque chose dans la classe elle-même. Comme je l'ai mentionné, la maison porte le nom du propriétaire et les étages liés à chaque objet créé à partir de cette classe de maison. Donc, dans notre dossier principal, nous avons ma maison, qui va l'avoir sur les propriétés du nom du propriétaire et des étages. Et ensuite, votre maison aura différentes propriétés, également appelées ancien nom et étages. Et mon hôtel a eu la même chose car cela prolonge la classe de la maison. Mais si je vais dans Bird ici, je peux créer quelque chose connu sous le nom de variable statique. Comme je l'ai dit, les ailes publiques, statiques, int sont égales à deux. Maintenant, si je retourne dans mon dossier principal ici, lorsque je vais accéder aux ailes d'oiseaux, nous voyons qu'il n'existe pas réellement. C'est parce que encore une fois, les variables statiques ne sont pas liées à l'oiseau des objets lui-même. L'objet est cet objet que nous avons créé ici. Au lieu de cela, ils sont liés à la classe réelle. Donc, des ailes d'oiseaux. Donc maintenant, si je dirige ça, nous allons voir la quantité d'ailes dans cette cabane à oiseaux. Dans ce cas, il s'agit de deux. Mais pourquoi utiliser la statique ici au lieu de simplement créer une variable normale ? Parce que cela n'est créé qu'une seule fois. Sinon, par exemple, avec un type de chaîne, cette variable est créée ici chaque fois que nous créons une nouvelle instance de notre classe Bird. Pour revenir à l'exemple de la maison, nous avons trois instances différentes de nom de propriétaire et étages, car nous n'avons pas trois objets différents qui vont les utiliser. Mais si j'avais trois oiseaux différents, nous n'aurions encore qu' un seul entier appelé ailes. Par conséquent, des variables statiques comme celle-ci seront utilisées chaque fois que vous avez une classe qui dispose d'une information partagée. Par exemple, les oiseaux ont deux ailes et cela ne changera jamais. avoir comme variables locales telles que ailes int privées équivaut à deux. Cela n'a pas trop de sens car cela ne changera jamais. Par conséquent, nous n'avons pas besoin d'avoir une variable d'ailes liée à chaque objet que nous créons. Au lieu de cela, nous pouvons simplement l'attacher directement à la classe. Maintenant, nous pouvons également avoir des méthodes statiques. Je peux dire public, statique, int, obtenir des ailes par exemple. Ici, nous pouvons simplement retourner des ailes. Désormais, les méthodes statiques ne seront utilisées que lorsque vous essayez accéder à des variables statiques ou d'utiliser des variables statiques ou à un type de fonctionnalité ou pour renvoyer éléments tels qu'un simple getter ici. Maintenant, dans ma classe principale, je ne peux pas imprimer les ailes d' oiseau. Et bien sûr, cela aura le même résultat car nous retournons simplement la même variable, mais semblable à la variable oiseau dot get wings n'existe pas réellement. Car encore une fois, les propriétés statiques et les méthodes statiques sont liées à la classe non à l'objet créé à partir de la classe. 37. Cours abstraits: Jusqu'à présent, nous avons regardé les cours normaux, comme notre maison, notre oiseau et nos classes hôtelières. Mais maintenant, nous allons jeter un coup d' œil à ce que l'on appelle des classes abstraites. Il s'agit d'un type de classe différent que nous ne pouvons pas utiliser directement. Par exemple, si je vais à mon cours d'oiseaux et que je fais de ce cours un cours abstrait public, rien ne se passe directement ici. Tout semble normal. Mais si nous revenons à notre fichier principal, nous avons ici une erreur car nous ne pouvons pas utiliser directement des classes abstraites. Il s'agit de classes conçues pour être utilisées uniquement avec des classes qui les étendent. Par exemple, ici, je peux faire un nouveau cours et je vais appeler ça un corbeau. Cela va prolonger la classe des oiseaux. Prolonge Bird. Et maintenant, nous devons créer notre propre constructeur car nous avons ici un constructeur autre que par défaut. Je peux donc dire que le public grandit le paramètre étant exactement le même que l'oiseau. Donc, type de chaîne, comme nous pouvons le voir ici, en revenant dans notre classe CHRO, nous pouvons appeler cette super fonction passant en type. Maintenant, toutes les flèches devraient disparaître. Si nous revenons dans notre classe principale. Et au lieu d'utiliser directement bird, je vais maintenant dire cro, gro est égal à un nouveau CRO. Maintenant, nous avons accès à cela et nous avions encore eu cette passe dans une chaîne. Dans ce cas, nous allons passer au nom du Corbeau. Et techniquement, c'est un oiseau parce que Cro étend Bird. Mais pourquoi voudriez-vous avoir une classe abstraite qui doit être étendue ? Nous ne pouvons pas utiliser cela directement. C'est là que le concept de fonctions abstraites entre en jeu. Par exemple, ici, je peux dire « abstrait public », « vide ». Je peux appeler ça Singh. Et je n' inclurai aucun corps fonctionnel. Si je devais le faire, nous avons une erreur. Si je survole cela et maintenant, il est dit que méthodes abstraites ne peuvent pas avoir de pot. Je vais donc simplement créer la déclaration d'une fonction, mais aucun corps n'y est attaché. Maintenant que chaque classe avait des étendues, la classe d'oiseaux est obligée d' étendre cette fonction sinc. Si je retourne à un corbeau, nous avons ici une erreur. Si je le survole, il est dit que la classe Crow doit être déclarée abstraite ou implémenter les méthodes abstraites. En voyant ici Bert, je peux dire public, nul, chanter. Je peux ensuite imprimer un son qu'un corbeau pourrait produire. Par exemple, ceci. Maintenant, si je retourne dans mon dossier principal, je peux maintenant dire Crow dot sin. Et si je l'exécute, nous verrons alors que cela nous a été imprimé sur la console. Disons que j'ai un autre cours ici. Je vais appeler ça un Robin. Je peux avoir cet oiseau étendu. Nous pouvons donc créer notre propre constructeur. Donc Robin public, type de chaîne. Ensuite, nous pouvons passer ces deux super méthodes que nous appellerons le constructeur d'oiseau. Maintenant, nous devons encore remplacer la méthode ToString. Vide public, chantez. Ici, je vais imprimer un tweet, tweeter. Et maintenant, je peux faire un exemple de Robin en disant que Robin est égal à nouveau Robin, en passant par Robin ici. Et puis je peux maintenant dire Robin point péché. Si je fais ça, on verra les deux sons différents que les oiseaux vont faire. Et cela est utile car la classe d'oiseaux est une classe abstraite, ce qui signifie qu'elle a beaucoup de configuration, mais elle n'est pas destinée à être utilisée directement. Il est destiné à être utilisé avec d'autres classes qui auront une fonctionnalité spécifique. Par exemple, chaque oiseau peut produire un bruit légèrement différent. Nous voulons donc forcer chaque type d' oiseau à implémenter directement cette fonctionnalité. 38. Interfaces: Jetons maintenant un coup d' œil aux interfaces, qui ont des concepts similaires à ceux des classes abstraites, qu'il suffit d'examiner. Mais ils présentent des différences majeures. Par exemple, nous avons ici une classe abstraite d'oiseaux. Et les classes abstraites ont généralement des choses normales dans les classes, par exemple différentes méthodes et variables. Cependant, nous allons généralement avoir une fonction abstraite que toute classe qui étend la classe d'oiseaux est obligée d'implémenter. Nous avons regardé cela dans la dernière vidéo avec notre classe CRO et Robin, où nous devons maintenant remplacer la méthode de chant. Maintenant, il faut garder à l'esprit que chaque classe en Java ne peut étendre qu' une autre classe, mais nous pouvons utiliser autant d' interfaces que nous le voulons. Par exemple, dans mon projet, je vais créer une nouvelle classe Java. Et je vais changer cela par une interface ici. Et je vais nommer cet animal. Maintenant, au sein de cet animal, nous ne pouvons pas avoir de constructeur, par exemple un animal public. Cela va provoquer une erreur. Les seules méthodes que nous pouvons avoir ici sont des méthodes abstraites. Disons que je veux que ma classe Robin et Cro implémente cette interface animale. Cela signifie également que tous les animaux que je fabriquerai à l'avenir, qu'il s'agisse de vaches, de chiens, de serpents, n'importe quoi devra être mis en œuvre. Cela ne devrait donc contenir que des choses spécifiques à un seul animal, exemple public int, durée de vie moyenne. Et encore une fois, ces méthodes vont être abstraites. Je ne peux donc pas écrire un corps de fonction réel ici car encore une fois, c'est une interface. Nous ne pouvons avoir que des fonctions elles-mêmes. Mais si je vais en classe micro, par exemple, je peux faire de cet instrument un animal. Maintenant, nous obtenons une erreur. Si je survole cela, il est dit que classe Corbeau doit soit être déclarée abstraite, soit implémenter la durée de vie moyenne de la méthode abstraite chez l'animal. Ici, je peux dire public sur la durée de vie moyenne. Et ça va en revenir huit. Maintenant, nous ne recevons plus d'erreur nulle part. Je vais voir mon Robin, je peux maintenant dire des outils animaux. Nous devrions faire exactement la même chose. Int public, durée de vie moyenne. Ici, je peux y retourner. Maintenant, je peux revenir dans mon fichier principal et je peux imprimer la durée de vie moyenne des points de croissance, et je peux imprimer la durée de vie moyenne de Robin Dot. Par course, nous en verrons 82 respectivement. Et vous pensez peut-être que nous pouvons réaliser ce même concept exact en ajoutant simplement à la fonction une méthode abstraite à notre classe Bird. Et c'est vrai. Et après les classes sont similaires aux interfaces à certains égards. Mais la principale différence ici est que vous voudrez généralement utiliser une interface lorsque vous n'avez que fonctions abstraites et que vous n'avez aucun autre type de fonctions. Et l'une des principales différences ici, comme je l'ai déjà mentionné, est que nous pouvons implémenter autant d' interfaces différentes que nous le voulons. Par exemple, si j'avais une autre interface appelée animal to, je pourrais l'implémenter ici. Ils sont séparés par des virgules, mais en Java, nous ne pouvons étendre qu'une seule classe. L'un des avantages des interfaces est donc que vous pouvez en utiliser autant que possible. Par conséquent, vous souhaitez généralement utiliser des interfaces à moins qu'il soit logique d'utiliser une classe. Par exemple, vous disposez de fonctionnalités par défaut qui doivent être héritées ou techniquement étendues par chaque classe enfant. Mais sinon, si vous n' avez que ces fonctions ici, que chaque classe enfant individuelle, telle que Robin et Cro, devrait réellement se substituer et s'implémenter, alors vous devez utiliser une interface. 39. Instance de: Que se passe-t-il si vous vouliez vérifier certains types de classes par rapport à d'autres types de classes ? Par exemple, je vais commencer le code que j'ai laissé dans la dernière vidéo, mais je vais me débarrasser de toutes les déclarations imprimées ici. Nous venons d'avoir un corbeau et un robin. Je ne peux pas avoir de déclaration si un corbeau est une instance d'oiseau, je peux imprimer Corbeau est un oiseau. Et ici, nous recevons cet avertissement. Si je le survole, il est dit que l'incidence de la croissance conditionnée des oiseaux est toujours vraie. C'est parce que cette ligne ici n'est qu'une variable que nous avons créée, mais nous ne la modifierons jamais du tout. Il sait avec certitude qu'il s' agit d'un exemple d'oiseau car le cro étend Bird comme nous le voyons ici. Bien sûr, si je dirige ça, c'est co-investir, disons qu'un corbeau est un oiseau, comme nous le voyons ici. Mais cela peut également être fait avec des interfaces. Un corbeau est donc un exemple d'animal. Maintenant, si je fais ça, nous obtiendrons la même réponse exacte que celle que nous voyons ici. Bien sûr, techniquement, nous devrions modifier la phrase pour dire qu' un corbeau est un animal. Mais vous avez l'idée. L'instance de peut être utile si nous voulions vérifier si un objet donné est une instance d'une autre classe ou d'une interface. Et il s'agit d'un cas d'utilisation supplémentaire pour les interfaces car techniquement, vous n'avez pas forcément besoin d' avoir quelque chose à l'intérieur de votre interface et cela fonctionnera toujours. Par exemple, un Robin est toujours en train de mettre en œuvre un animal, et le CRO met toujours en œuvre durée de vie moyenne de l' animal devient maintenant une méthode normale qui est rattachée à la classe du corbeau et rattachés respectivement à la classe Robin. Et n'a rien à voir avec l'interface animal. Mais maintenant qu'un Robin et un CRO sont tous deux des animaux car nous sommes toujours en train d'implémenter l'interface. Nous pouvons toujours les utiliser et des vérifications comme celui-ci. 40. Enums: Nous allons maintenant nous éloigner de programmation orientée objet et passer à d'autres aspects de Java. Par exemple, dans cette vidéo, nous allons en apprendre davantage sur les énumérations, est-à-dire les énumérations. Fondamentalement, il s'agit de types de valeurs spécifiques qui ressemblent à des variables, mais elles ne peuvent pas changer et elles peuvent être utilisées de manière très spécifique. Alors, allons-y et créons un nouveau dossier ici. Nous pouvons donc sélectionner la classe Java. Ensuite, nous pouvons sélectionner enum. Je vais appeler ces jours de la semaine. Vous pouvez avoir des énumérations pour avoir toutes les valeurs que vous voulez. Mais en général, ce sont des choses qui ne devraient jamais changer. Ils ne sont donc pas techniquement comme une variable dans laquelle vous pourriez avoir entrée d'un utilisateur ou un certain type de nombre aléatoire. Ce sont des choses qui seront concrètes et qui seront toujours utilisées de la même manière. Un bon exemple de cela est celui des jours de la semaine, qui ne changeront pas. Ici, je vais ajouter une virgule du dimanche. J'ai remarqué comment je tapais en majuscules. Il s'agit d'une convention courante lorsque vous utilisez réellement des énumérations. Nous pourrons donc avoir lundi, mardi, mercredi, jeudi, vendredi et samedi. De toute évidence, vous épelez correctement. Nous avons maintenant ces sept valeurs différentes dans notre énumération, mais comment les utiliser réellement et comment sont-elles utiles ? Donc, en revenant dans notre dossier principal, je peux dire les points des jours de la semaine. Et ensuite, je peux accéder à chaque valeur individuelle si je le voulais. Ou je peux tous les obtenir sous forme de tableau. Ici, nous voyons que la méthode des valeurs est intégrée dans des énumérations et qu'elle renvoie des jours de la semaine sous forme de tableau. Mais par exemple, si je voulais imprimer les jours de la semaine vendredi, je peux alors exécuter ça. Nous voyons ici vendredi dans la console. Nous pouvons également les utiliser avec des instructions if. Maintenant, chaque valeur d'énumération individuelle possède également un ensemble de méthodes différentes. Par exemple, nous pouvons le comparer à un autre exemple de jours par semaine. Nous pouvons obtenir le nom, nous pouvons obtenir l'ordinal à moins de regarder rapidement ces deux choses. Je suis donc allé imprimer le nom. Ensuite, je vais copier et coller cette ligne. Et je vais imprimer l'ordinal. Maintenant, si je lance ça ici, on revoit vendredi, et alors 55 sera l'indice réel que cela sera utilisé. Par exemple, le dimanche vaut 0. Maintenant, vous n'avez pas à ajouter ces commentaires, je le fais simplement pour que nous puissions lire cela plus facilement . Nous avons donc ici 012345, et bien sûr samedi serait six, mais c'est pourquoi nous en voyons cinq et notre console. Je vais me débarrasser de tout ça. Et maintenant, élargissons cette énumération. Par exemple, supposons que je ne veux pas que Friday soit en majuscules, mais plutôt que je souhaite réécrire une chaîne spécifique en tant que nom de ce jour-là. Si semblable aux classes, les enums peuvent réellement avoir leur propre constructeur. Je vais mettre un point-virgule à la fin de toutes mes valeurs dans ce cas, j'ai eu un samedi. Et ensuite, je peux dire les jours de la semaine. Maintenant, vous remarquerez peut-être que je n'ai ni public ni privé ni quoi que ce soit de ce genre ici. C'est parce que si je survole cette erreur, il est dit que le modificateur public n'est pas autorisé ici. La raison en est que cette fonction constructeur ne peut être exécutée que dans l'énumération elle-même. Par exemple, entre parenthèses du dimanche. Ici, nous transmettions différents arguments dans le constructeur. Nous ne pouvons pas accéder à ce constructeur en dehors de ce fichier eNode. Mais pourquoi aurait-on besoin d'un constructeur en premier lieu ? Eh bien, nous pouvons réellement stocker des valeurs différentes pour chaque valeur énumérée individuelle. Semblable aux propriétés privées d'une classe, je suppose que je dis nom de chaîne privée, je suppose un booléen privé, Workday. Et puis, au sein du constructeur, je peux avoir besoin de ces deux propriétés. Donc, nom de chaîne, booléen, Workday. Ensuite, je peux dire que ce .name est égal nom et que ce point de travail est égal à jour de travail. Nous obtenons maintenant quelques erreurs sur chacune de nos valeurs. Et c'est parce que par défaut, il va appeler un constructeur sans arguments intégrés. Mais bien sûr, si je survole ça, il va s'attendre à une chaîne et à un booléen. Ici. Je peux passer dimanche et ensuite je peux dire faux parce que c'est une journée de travail. Je vais faire la même chose pour tout ça. Par exemple, lundi et vrai, comme je le dis mardi et vrai, mercredi et un vrai. Je peux ensuite passer jeudi. Et c'est vrai. Nous avons ici un vendredi et un vrai, puis enfin, samedi et faux. Maintenant, nous n'avons plus d'erreurs à moins d'essayer d'utiliser l' une de ces erreurs dans notre fichier actuel ici. Au lieu de jours par semaine , le nom du point Theta dot, puis-je accéder aux valeurs réelles telles que le jour de la semaine ? Et nous ne pouvons pas, nous devons en fait faire nos propres résultats publics pour y parvenir. Ici, je peux dire public, chaîne GetName. Je peux maintenant renvoyer mon nom. Ensuite, je peux dire que le booléen public est Workday, et je peux maintenant retourner workday. Getname n'est pas vraiment un bon nom pour la méthode. La raison en est que cela peut facilement être mélangé avec le nom. Par exemple, nous avons name et GetName. On ne sait pas très bien lequel nous voudrons. Une chose que nous pouvons faire, c'est que nous pouvons renommer cela pour obtenir le nom d'affichage. Maintenant, un nom complet comme quelque chose qui sera généralement affiché aux utilisateurs. Donc quelque chose avec un F majuscule et des minuscules, tout le reste serait un meilleur nom d'affichage que tout étant majuscule, tout étant majuscule, ça semble bizarre pour l'utilisateur. Et donc un F majuscule avec tout en minuscules, c'est en fait comme ça que tu dirais ça. Normalement, il s'agit d'un nom d'affichage correct. En revenant au lieu de GetName, je peux maintenant dire le nom d'affichage des enfants. Alors, bien sûr, je vais dire que le point de vendredi est un jour de travail. Je pense que allez-y et lancez ça. Nous devrions voir le nom complet ainsi que s'il s'agit d'une journée de travail, qui dans ce cas S a vendredi et vrai. Vous pouvez désormais utiliser des énumérations comme types de variables. Par exemple, je peux dire jours de semaine, jour égal à jours de la semaine, lundi. Je peux alors dire que si le jour est un jour de travail, je peux imprimer pour aller travailler aujourd'hui. Sinon, je peux imprimer que c'est un week-end. Maintenant, si je l'exécute, nous allons travailler aujourd'hui parce que nous accédions à la valeur Day, qui équivaut à lundi. Mais bien sûr, si je change ça pour samedi et que je fais ça, on voit maintenant que c'est un week-end. Maintenant, il y a encore une chose que je voulais vous montrer avec des énumérations, et c'est la possibilité de les parcourir en boucle, comme je l'ai dit, quatre jours par semaine, par jour. Ici, je peux passer des valeurs de points jours par semaine. Si je survole cela, nous voyons que cela renvoie un tableau de jours par semaine. Il s'agit d'un tableau de chaque valeur individuelle en tant qu'élément propre. Ici, je peux imprimer le point de jour, nous trouver par nom, puis un deux-points. Ensuite, je peux ajouter que le jour est Workday. Si je fais ça, ça va passer en boucle tous les jours. Il va imprimer leur nom ainsi qu' un booléen s'il s'agit d'une journée de travail ou non. De toute évidence, avec une énumération, nous ne recevons aucune entrée externe provenant d'autres parties du programme. Tout ce qui comporte une énumération ou un auto-enclos, ce qui signifie que les arguments sont passés dans le constructeur ou simplement des valeurs statiques qui ne sont pas réellement des variables. Comme vous pouvez le voir, je ne fais que lui passer une chaîne et une valeur booléenne. Je ne transmets aucune variable. énumérations sont utiles lorsque vous avez quelque chose comme les jours de la semaine où ils sont concrets et ne changeront jamais. Même les variables qui passent par le constructeur, elles ne changeront pas. Cela est très utile si jamais vous avez choses très concrètes comme celle-ci, car vous pouvez facilement y accéder et référencer certaines valeurs sans soucier de leur évolution constante. 41. Essayez de capturer enfin: Dans une vidéo précédente, lorsque nous utilisons des scanners, nous avons vu à quoi ressemble une erreur. Allons de l'avant et recréons cela. Je peux créer un scanner. Je l'appelle entrée et je sinus est égal à la valeur du nouveau scanner. Ici, je peux passer dans System.in. Tout cela devrait vous être familier dès le début du cours. Maintenant, je vais simplement imprimer le point d'entrée suivant int. Et si je lance ça, il va s'attendre à ce que je saisisse un entier. Par exemple, si j'entre cinq, tout fonctionne bien et le processus s'est terminé avec un code de sortie réussi, qui est 0. Mais si je réexécute ceci et que j' entre dans une chaîne telle que test, nous obtenons maintenant une exception. Il s'agit essentiellement d'une erreur. Et à première vue, cela peut sembler très déroutant, mais c'est en fait très simple. Fondamentalement, nous avons une exception dans le thread principal et il va avoir une liste d'où viennent toutes les erreurs. C'est ce qu'on appelle une trace de pile. Et il s'agit essentiellement de suivre exactement d'où vient l'erreur. Maintenant, ils sont tous cliquables, et en fait, nous voyons ici le nom de l'erreur comme une exception de non-correspondance d'entrée. Cela se produit lorsque nous saisissons quelque chose qui n'est pas le bon type. Je peux effectivement cliquer sur l'un d'entre eux, par exemple, scanner point Java. Et cela va ouvrir la peau ou la classe, qui contient un tas de choses dont nous n' avons pas à nous soucier. Je vais en finir avec ça. Mais le plus important, c'est que nous puissions cliquer sur notre propre code. On peut vraiment le voir en bleu. Si je ferme tous mes fichiers, je peux cliquer dessus ici, vais l'ouvrir et me mettre sur la même ligne exacte où se trouve l'erreur. Bien, mais comment résoudre ce problème ? Nous pouvons utiliser quelque chose connu sous le nom de try-catch. Je vais ajouter un commentaire ici. Nous avons try-catch et nous avons également une autre option connue sous le nom de finalement, la syntaxe pour cela serait d'essayer des accolades bouclées, puis vous devez ajouter une capture. Il va y avoir une exception. Je vais appeler cela une exception ici. Et il existe différents types d'exceptions. En règle générale, vous ne souhaitez pas avoir d'exception générique ici, mais plutôt utiliser le type exact d'exception que vous comptez attraper. Dans ce cas, il s'agit d'une exception de non-correspondance d'entrée, comme nous pouvons le voir à partir de la trace de pile ici. Donc, au lieu de simplement dire exception, je vais dire exception de non-correspondance d'entrée. Maintenant, ici, je peux dire que je pointe la trace de pile d'impression. Et cela va simplement faire exactement la même chose que celle que nous voyons ici dans notre console. Pour le prouver, je peux prendre ces déclarations de lignes imprimées. Je peux le mettre à l'intérieur du try-catch. Si je fais ça, nous obtiendrons les mêmes résultats exacts. Si je saisis quelque chose qui n'est pas un entier, par exemple, cette chaîne. Nous voyons ici l'erreur exacte. Que se passe-t-il exactement ici ? Eh bien, en gros, nous allons essayer ce code ici. Si quelque chose ne fonctionne pas, il va générer une erreur. Désormais, par défaut, si nous ne détectons pas d'erreur, le programme va planter. Pour le prouver, je peux ramener cette ligne ici. Et je vais commenter notre try-catch pour l'instant. Et pour ce faire avec plusieurs lignes, il vous suffit de les sélectionner toutes, puis de contrôler la barre oblique avant ou la barre oblique de commande avant sur un Mac. Maintenant, ici, je vais imprimer travaillé. C'est après que nous ayons reçu la prochaine entrée int. Si je fais ça, il va me demander un numéro. Je vais entrer cinq et ça a fonctionné. Mais si je refais ça et que j'ai passé le test, ça ne dira pas que ça a fonctionné. C'est parce que le programme s'est écrasé. Et donc tout ce qui est passé ne sera pas une rampe. C'est la raison principale pour laquelle vous souhaitez utiliser try-catch. Parce que si j'imprime a fonctionné après cela et que j'exécute le programme ici, je peux entrer en test. Et cela va toujours générer l'erreur car nous l' imprimons à cause de la ligne 14, de l' édition, de l'impression de la trace de la pile. Mais il ne va pas planter le programme. Et nous le voyons parce que nous imprimons a fonctionné directement après. Chaque fois que vous disposez d'un code susceptible de déclencher une exception, vous vouliez vous assurer d'attraper cette exception, puis de la gérer en conséquence. Dans certains cas, cela peut être imprimé. Vous n'avez pas saisi de numéro et nous n'avons pas nécessairement besoin d'imprimer une trace de pile. Je vais donc supprimer ça. Maintenant, si je fais ça et que je pénètre dans l'intestin, nous ne verrons pas l'erreur. Au lieu de cela, nous allons juste le voir. Vous n'avez pas entré de numéro. J'ai enfin parlé de cette chose. Qu'est-ce que c'est exactement ? Eh bien, ça vient toujours après. Essayez d'attraper. Je peux ajouter ici. Et enfin, c' est quelque chose qui sera exécuté quoi qu'il arrive. Essayez donc d'exécuter une ligne à la fois. Il va donc exécuter cette ligne, cette ligne et cette ligne. S'il y a une exception, il cessera immédiatement d'essayer d'exécuter ce code ici. Et il sautera immédiatement à l'instruction catch, exécutant tout ce qui se trouve à l'intérieur de ces accolades bouclées ici. Et évidemment, cela dit, ce code surligné ne sera exécuté que s' il y a une exception. Si tout fonctionne bien dans le bloc d'essai ici , le code de capture ne sera jamais exécuté. Mais enfin, je passe par courant quoi que ce soit, peu importe si tout a parfaitement fonctionné ou s' il y a une exception, je peux imprimer. J'ai enfin couru. Et je vais faire ça ici. Je peux entrer un numéro, disons dix. Et là, on voit enfin qu'il a été couru. Si je le réexécute, je peux entrer une chaîne. Nous voyons que vous n'avez pas entré de numéro, mais nous voyons toujours enfin RAN. Maintenant, cela est utile dans de nombreux cas d'utilisation, mais un cours très spécifique est en dehors du cadre de ce cours. C'est essentiellement en ce qui concerne les connexions à la base de données. Essentiellement, avec notre instruction try, nous essayerions de nous connecter à la base de données. Dans un cas de problème, nous gérerions toutes les erreurs et par exemple, des informations de connexion non valides. Et puis, enfin, va fermer toutes les connexions ouvertes. Maintenant, dans certains cas d'utilisation, vous verrez des connexions comme celle-ci, et c'est un bon exemple en théorie du vent qui peut enfin être utilisé. 42. Jeter des erreurs: Dans la dernière vidéo, nous avons regardé comment gérer différentes erreurs. Mais ce que nous voulons créer nos propres erreurs. Par exemple, je vais supprimer tout cela et je vais changer ce commentaire ici pour générer une erreur. Et c'est ce que nous appellerons cela chaque fois que nous voulons créer notre propre erreur. Par exemple, je peux dire ici une chaîne. La chaîne suivante est égale au point d'entrée suivant. Maintenant, ici, je vais dire que si point suivant est égal à ignorer l'erreur de casse, je ne voulais pas lancer ma propre erreur. Pour ce faire, je peux dire lancer nouvelle exception et je peux passer une chaîne. Et ce sera le message qui sera imprimé sur la console. Par exemple, une erreur a été signalée l'utilisateur car l'utilisateur saisit la chaîne ici en tant qu'erreur. Mais nous avons une erreur en ce moment. La solution ici consiste à ajouter l'exception à la signature de la méthode. Si je clique dessus, notre méthode principale dit maintenant lance une exception. Cela dira essentiellement à Java qu'au sein de cette fonction, nous allons lancer notre propre exception. Maintenant, en dehors de notre déclaration if, je peux imprimer la chaîne suivante de l'utilisateur. Je vais aller de l'avant et faire ça. Et ici, je vais entrer dans HelloWorld et il devrait imprimer Hello World et tout fonctionne comme prévu. Mais si je l'exécute encore une fois, je ne peux pas imprimer d'erreur. Et cela rendra alors cette affirmation vraie. Donc, si j'appuie sur Entrée, nous allons maintenant obtenir notre propre exception. Ici, nous avons la ficelle. Il indique qu'une erreur a été donnée par l'utilisateur, et nous pouvons cliquer dessus pour voir où l' exception a été déclenchée. Maintenant, vous vous demandez peut-être pourquoi aurait-on jamais voulu faire cela ? Pourquoi ne pas simplement dire à l'utilisateur de ne pas saisir l'erreur de chaîne ? Eh bien, l'une des raisons pour lesquelles vous voulez le faire est que les programmeurs qui utilisent votre code ou vous-même avec d'autres parties de votre projet sont alors obligés de détecter certaines erreurs et d'interagir correctement. Par exemple, si vous créez votre propre programme d'autres développeurs vont télécharger et importer. Vous pouvez ensuite lancer différentes erreurs afin que les développeurs soient obligés de les attraper et de les gérer selon leur façon de le faire. Selon le type d'erreur qu'il s'agit. Le même concept s'applique à vos propres projets. Vous pouvez lancer certaines erreurs chaque fois que certaines choses se produisent. Dans d'autres parties de votre programme, vous pouvez utiliser le système try-catch pour résoudre ce problème. 43. Listes et listes de tableaux: Nouveau début du cours, nous avons dû regarder les tableaux, mais maintenant nous allons jeter un coup d'œil aux listes et aux ArrayList. Il s'agira essentiellement de façons plus avancées d'utiliser les tableaux. Et dans de nombreuses situations qui vont être plus conviviales et plus puissantes. Disons donc que je veux avoir un tableau d'entiers, comme je dis int nombres entiers équivaut à des crochets. Et ici, je peux ajouter à ma liste de chiffres, par exemple 123. Disons maintenant que je veux aller de l'avant et ajouter un quatrième élément. Eh bien, si je dis que l'index des nombres trois est égal à quatre, nous allons maintenant avoir une erreur. Si je survole cela, il est indiqué que l'index du tableau est hors limites. Cela signifie essentiellement que n'importe quel tableau ne peut pas ajouter de nouvelles choses. Il faudrait créer un tableau entièrement différent. Par exemple, je pourrais dire que les nombres sont égaux un nouveau tableau d'entiers contenant 1234 . Et ça va marcher. Mais évidemment, je ne veux pas avoir à le faire. Je veux pouvoir simplement ajouter quelque chose à ce tableau. Mais par défaut, les baies ne disposent pas de cette fonctionnalité. C'est pourquoi nous avons des listes de tableaux. Ce sont des moyens beaucoup plus simples d'utiliser des tableaux où nous pouvons facilement supprimer des objets, ajouter des éléments, bien sûr, accéder à des éléments similaires à l'effacement existant. Je vais aller de l'avant et commenter cette ligne ici. Et je vais créer une nouvelle ArrayList. La première étape consiste maintenant à créer une liste générique. Cela va provenir de Java util. Il s'agit d'une interface, comme on peut le voir à partir de l'icône verte ici. Maintenant, ici, nous devons transmettre le type de données que nous examinons dans un magasin et nous ne pouvons pas transmettre un int car il s'agit d'un type primitif, nous devons passer dans une certaine classe. Dans Java, nous avons accès à un entier, qui est une classe. Et cela va nous permettre d' utiliser des entiers dans cette liste. Je vais donc appeler les numéros de cette liste. Nous pouvons donc attribuer cette valeur égale à une nouvelle ArrayList. Maintenant, nous avons juste moins que le signe et plus grand que le signe. Ensuite, ces parenthèses, le signe inférieur et supérieur à, peuvent contenir la valeur HEPA souhaitée, par exemple un entier. Mais dans Java moderne, nous n'avons pas besoin de le faire. Il va simplement accéder au type de valeur dont nous avons besoin à partir de l'entier que nous avons transmis ici. Que vient de se passer exactement ? Eh bien, si je survole la liste ici, nous voyons que c' est une interface, comme nous le voyons ici, une interface publique. Et cela nous donne un certain nombre de fonctionnalités intégrées que la plupart des listes différentes auront. Après avoir dit cela, j'aurais dû mentionner qu'ArrayList n' est pas le seul type de liste, mais c'est la liste la plus facile à comprendre et la plus facile à démontrer. Nous allons l'utiliser pour ce tutoriel. ArrayList est maintenant sa propre classe qui va implémenter l'interface de liste. Il va donc obtenir toutes les fonctionnalités de la liste, mais aussi s'y construire. C'est cool et tout, mais comment utiliser réellement la liste des numéros ? Eh bien, je peux dire ici que les chiffres pointent. La première option consiste à passer dans une collection différente, telle qu'une autre liste et y ajouter tous les éléments. Nous pouvons également ajouter des éléments individuels tels qu'un entier. Par exemple, un. Maintenant, si j'avais des points de chiffres ici, on peut ajouter un certain élément dans un certain index. Nous pouvons également effacer la liste. Nous pouvons voir s'il est vide, il existe un tas d'autres options telles que la suppression de certains éléments, l'obtention de la taille actuelle ou de la quantité d' éléments de la liste, et bien d'autres. Allons de l'avant et ajoutons les trois numéros que nous voulions à cette liste. Les chiffres, n'ajoutez pas deux chiffres, les points en ajoutent trois. Maintenant, les numéros ArrayList sont très similaires au tableau de nombres qui a commenté. De toute évidence, dans un exemple aussi simple, cela n'aura pas d'importance. Mais si nous voulons vraiment ajouter, disons, dix ou 100 numéros, nous pouvons facilement parcourir ces chiffres et les passer dans la fonction d'ajout ici. Ou si nous le voulions, nous pouvons passer un tableau dans le nouveau constructeur de listes de tableaux ici. Maintenant, nous ne pouvons pas simplement passer un tableau générique. Nous devons dire des tableaux avec un point majuscule comme liste. Maintenant, ici, nous allons avoir un varargs avec n'importe quel nombre d' entiers. Je peux donc dire 123. Maintenant, si je supprime cela, nous aurons toujours le même résultat exact. Par conséquent, si vous possédez un tableau existant, vous pouvez facilement la transmettre, semblable à une syntaxe comme celle-ci. Mais généralement, vous n'allez pas le faire. La plupart du temps. Vous allez simplement créer une ArrayList , puis y ajouter des éléments selon vos besoins. Allons donc tout imprimer ici. Je peux imprimer des numéros. Et si je fais ça, on voit maintenant 123. Allons de l'avant et essayons de déplacer certains éléments à partir d'ici. Je peux dire que les chiffres sont supprimés. Ici, nous pouvons transmettre un objet spécifique ou un entier spécifique. Un entier ne va pas supprimer cet élément spécifique. Cela va réellement supprimer l'index. Je déplace en quelque sorte l'index un, ce qui va être la valeur deux. Je fais ça, nous en voyons maintenant seulement 13 dans notre tableau, comme nous le faisons ici. Mais que se passe-t-il si je veux simplement supprimer le numéro deux ? Eh bien, comme je l'ai dit, la valeur entière de et passe dans. Maintenant, si je fais ça, nous allons voir 13 comme nous le faisons ici. Maintenant, cela peut paraître un peu bizarre. Pourquoi devons-nous réellement faire cela ? Eh bien, si je dis que les chiffres sont supprimés ici, nous voyons que c'est une méthode surchargée. Nous pouvons transmettre un index ou un condensateur, un objet pour ne transmettre que le numéro deux, le numéro un ou tout type d'entier de base. Il va traiter cela comme un type primitif d'int. Il utilisera un exemple de sujet ici. Mais si nous transmettons une classe spécifique ou un objet qui représente quelque chose, il va utiliser la deuxième option ici. C'est exactement ce que nous faisons avec cette ligne de code ici. Cela va passer dans un objet et pas seulement un entier primitif. Il passera ensuite par la ArrayList et tentera de supprimer tous les éléments correspondant à cette valeur ici, ce qui, dans ce cas , nous ne voyons pas le numéro deux. Nous allons maintenant imprimer combien d'éléments il y a dans le surréaliste. Je pourrais donc dire les chiffres taille des points. Si je fais ça ici, on en verra deux dans la console. Et nous pouvons également clarifier cela. Allons de l'avant et disons des chiffres. Dot clair. Maintenant, si je lance ça, ça va réellement effacer cela après avoir imprimé les deux chiffres comme nous le voyons ici. Mais notre taille est maintenant à 0 car nous avons effacé la ArrayList. Maintenant, une ArrayList et un général d'écoute est connue sous le nom de collection. Il s'agit essentiellement d'une classe personnalisée qui nous permet d'ajouter certaines choses et de supprimer certaines choses. Et il y en a un tas d'exemples différents. Dans cette vidéo et dans la vidéo suivante, nous allons passer en revue deux exemples. Mais honnêtement, couvrir chaque exemple justifierait son propre cours sur ce point. Nous allons donc simplement nous en tenir à certaines des collections les plus basiques et les plus couramment utilisées, telles que ArrayList et HashMaps, que nous examinerons dans la prochaine vidéo. 44. Cartes et cartes Hash: Nous allons maintenant jeter un coup d'œil à HashMaps, qui sont un moyen de stocker quelque chose connu sous le nom de paire de valeurs clés. Cela signifie essentiellement que pour chaque clé, il y a une valeur correspondante. Jetons un coup d'œil à quelques exemples. Ici. Je vais avoir une carte, et cela va stocker une clé et une valeur, qui peuvent être deux types de variables différents. Par exemple, la clé peut être une chaîne et la valeur peut être un entier. Comme pour ArrayList, il doit s' agir des types de classes réels. Nous ne pouvons donc pas dire ça ici. Nous devrions spécifier un entier avec une majuscule I. Ici, je peux ajouter différents types de scores. Et je vais attribuer un égal à un nouveau HashMap. Maintenant similaire à une ArrayList, nous pouvons ajouter une chaîne et un entier si nous le voulons. Mais dans Java moderne n'est pas nécessaire, donc je ne vais pas le faire. Maintenant, qu'est-ce qu' une paire de valeurs clés répertoriée à ces scores correspond à un certain jeu vidéo. Je peux dire que les scores pointent. Et ici, nous pouvons voir que nous passons une corde, c'est ce que nous avons de cette chaîne ici. Et nous transmettons également un entier à partir de cet entier ici. Il s'agit d'une paire de valeurs clés. Par exemple, supposons que j' ai 77 points dans ce match. Je peux dire que les scores sont mis. Bob a des points de police dans le jeu et marque des points ici, Joe a 30 points dans le jeu. Allons de l'avant et imprimons cela sur la console. Je peux donc imprimer des partitions et je peux exécuter ça. Et ici, on voit Alex est égal à 77, Joe est égal à 30 et Bob est égal à 80. Mais quelles autres options avons-nous quand il s'agit de cela ? Je peux dire que les scores pointent ici. Je peux obtenir une, une certaine chose. Et c'est là qu'on passait dans la ficelle. Par exemple, je peux passer un Alex. Et je vais couper toute cette ligne ici avec Control X ou Command X sur Mac. Et puis je peux imprimer ça. Je peux le coller avec Control V ou Command V sur un Mac. Et si je fais ça, on va obtenir les partitions de la corde Alex, dans ce cas, 77. Si je dis points scores, nous pourrions alors l'effacer comme une ArrayList. Cela va simplement supprimer toutes les entrées. Nous pouvons obtenir un jeu d'entrées ou un jeu de clés. Nous pouvons également obtenir les valeurs et nous examinerons ce que ces trois choses font ici dans un instant. On peut voir s'il est vide. Nous pouvons remplacer certaines choses. Nous pouvons obtenir la taille. C'est ici que nous pouvons obtenir les valeurs. Nous pouvons également voir s' il contient une clé, horrible atteint une valeur. Et il y a beaucoup d'autres options, comme les supprimer. La plupart sont explicites, d'autres que vous devrez peut-être expérimenter ou consulter la documentation. Allons de l'avant et essayons de parcourir toutes les clés ou toutes les valeurs ou les deux. Je vais me débarrasser de ces déclarations imprimées ici. Je vais dire pour une clé à cordes. Et puis, ici, nous allons utiliser une boucle pour chaque. Nous avons donc notre côlon ici. Je peux maintenant dire le jeu de touches de points de scores. Et cela renvoie un ensemble qui est similaire à une liste que nous avons vue dans la dernière vidéo. Maintenant, ici, je peux simplement imprimer la clé. Si je fais ça, il va imprimer Alex, Bob et Joe, comme nous le voyons ici. Mais que se passe-t-il maintenant si nous voulions avoir accès aux valeurs ? Je peux dire que les scores points v, et ici nous avons des valeurs. Maintenant, nous devrions changer cela par un int, je suppose que je suis int. Et puis je peux imprimer de la valeur. Si je l'exécute, nous pouvons maintenant voir les trois valeurs de cette carte exacte. Mais que se passe-t-il si je voulais avoir accès aux deux ? Eh bien, je peux dire que pour l'entrée avec un E majuscule, nous allons utiliser ceci à partir de la carte Java util. Ici, nous devons spécifier quels types de variables nous avons besoin. Donc, dans ce cas, une chaîne et un entier. Je vais appeler cette entrée de variable. Ensuite, avec un deux-points, je peux maintenant dire scores points EntrySet. Maintenant, si je survole les jeux d'entrées, cela va renvoyer un ensemble d'entrée qui a un K et un V, qui signifie clé et valeur. Donc essentiellement, je peux dire entrée point fgetc clé ou point d'entrée obtenir de la valeur pour y accéder. Par exemple, la clé de chaîne est égale à entrée, parle KCI, puis la valeur int est égale à la valeur d'entrée point get. Je peux ensuite imprimer la clé qui a le nom d'utilisateur, a plus de points de valeur. Maintenant, si je l'exécute, il va imprimer ce que chaque utilisateur possède et ses points correspondants, comme nous le voyons ici. 45. Créer un fichier de pot: Nous sommes sur le point d'aborder le projet final du cours, qui va refaire le jeu Battleship dans Java. Mais avant de le faire, nous devons nous assurer de bien comprendre comment convertir notre code Java en fichier exécutable. Vous connaissez peut-être les fichiers DOT EXE où vous pouvez double-cliquer dessus et ouvrir un programme. En Java, nous avons un fichier dot jar, que vous avez probablement vu auparavant. Comment convertir exactement tout notre code source en un fichier dot jar que nous pouvons réellement exécuter. La première étape consiste à cliquer sur l'engrenage en haut à droite, puis à accéder à la structure du projet. Vous pouvez également utiliser ce raccourci déroutant ici. Une fois que vous êtes ici, vous voulez aller à gauche et cliquer sur des artefacts, puis cliquer sur le survol plus au-dessus pot, puis passer à partir de modules avec dépendances. À partir de là, nous devons spécifier une classe principale. C'est essentiellement la classe où se trouve notre fonction principale. Si je clique sur un dossier ouvert, il sélectionne automatiquement tous les différents fichiers qui ont une fonction principale. Nous n'en avons donc qu'un. Nous pouvons simplement cliquer sur OK, puis cliquer à nouveau sur OK. À partir d'ici, je peux cliquer sur OK. Ensuite, je peux cliquer sur Construire, construire des artefacts. Et à partir de là, nous pouvons simplement appuyer sur Entrée ou vous pouvez également cliquer sur Construire. Nous voyons qu'il est en train de construire quelque chose près du bas. Et maintenant que c'est fait, nous pouvons étendre notre répertoire OUT, aller dans Artefacts. Et ici, nous voyons notre pot à points de travail. Je vais cliquer dessus avec le bouton droit de la souris. Je pourrais ensuite cliquer sur Copier la référence barre oblique du chemin. Et à partir de là, je vais cliquer sur le chemin absolu. Si je colle cela, ce sera un chemin de fichier vers ce fichier jar exact. Maintenant, pour exécuter cela, nous ne pouvons pas simplement l'ouvrir. Nous devons réellement le faire passer par un terminal. La raison en est que s'il s' agit d'une application console, qui signifie que nous travaillons dans notre console comme nous l'avons vu tout au long de ce programme. Par conséquent, nous n'avons pas de fenêtre personnalisée avec des boutons et des images et tout ce qui est hors du cadre de ce cours. Nous n'avons pas abordé tout cela dans ce cours. Alors, comment faire ça exactement ? Nous devons ouvrir notre propre terminal. Si vous utilisez Windows, vous pouvez effectuer une recherche ou une commande, puis continuer et appuyer sur Entrée. Maintenant, si vous êtes sur un Mac parce que je ne possède pas de Mac, je ne sais pas trop comment le faire, mais vous pouvez simplement Google comment ouvrir terminal sur Mac et cela devrait avoir un tas de résultats. Je vais donc vous aider. Quoi qu'il en soit, une fois que votre invite de commandes ou votre terminal est ouvert, vous pouvez taper dans l' espace Java , l'espace Java, puis coller dans votre chemin. Mais sachez que si vous avez des espaces sur votre chemin, vous devez rapidement tout entier et doubles guillemets. Je vais ajouter des codes doubles ici. Et puis à l'intérieur, je peux cliquer avec le bouton droit de la souris pour coller le chemin. Ici, nous voyons que le dossier des clés Warnock contient des espaces. Je dois donc ajouter des guillemets doubles de chaque côté. Si j'appuie sur Entrée, nous voyons que rien ne se passe réellement. C'est parce que notre code ne fait rien. Allons de l'avant et imprimons le texte, Hello World. Ensuite, je vais aller dans Build, construire des artefacts et appuyer sur Entrée. Ici, nous voyons qu'il est en train de construire une fois de plus. En revenant au terminal, je peux appuyer sur la flèche vers le haut pour passer à la commande précédente. Si j'appuie sur Entrée, ça va maintenant dire bonjour. Le code actuel est maintenant exécuté dans ce fichier jar. 46. Introduction au projet cuivrée: Nous allons maintenant plonger dans le projet final du parcours qui va créer un jeu de cuirassé solo. Ici, nous voyons ce tableau et nous avons cinq types de navires différents, et ils sont tous positionnés au hasard autour de la planche. Nous pouvons ensuite saisir une coordonnée, par exemple un 0, qui est en fait vide comme on peut le voir ici. Et il dira alors mademoiselle. Mais je peux sélectionner H pour cette coordonnée ici. Et il dira alors frapper. Et cela est maintenant remplacé par un x. Si je le fais, alors j 0 va dire, utilisez leur cuirassé coulé et tout ce vaisseau ici est coulé. Maintenant, contrairement aux vidéos précédentes du cours où nous avons écrit du code ensemble, au cours de ce projet, nous allons travailler ensemble sur les plans de chaque fonctionnalité individuelle. Et puis j'ai voulu essayer de créer cette fonctionnalité par vous-même. Maintenant, une fois cette fonctionnalité terminée, ou une fois que vous avez l'impression d'avoir fait autant que possible et que vous avez toujours besoin d'aide supplémentaire. Vous pouvez ensuite passer à la section suivante de la vidéo où nous allons réellement la construire ensemble. Mais je vous encourage vivement à essayer chaque partie de ce projet seul avant regarder le tutoriel étape par étape. C'est ainsi que fonctionnent les développeurs de logiciels réels. C'est donc une bonne habitude de se lancer dans cette voie. Vous pouvez développer une compétence de résolution de problèmes à l'aide de la programmation. 47. Fichiers et coordonnées: Pour commencer le projet, je supprimerais tous les fichiers que vous avez dans votre projet en tant que maison sûre, le fichier qui a votre fonction principale dans lequel j'étais crée ces cinq fichiers différents ici. Et gardez à l'esprit le dossier du cuirassé Maine. Cela contient ma fonction principale ici. Il y a maintenant beaucoup de pièces dans ce projet qui dépendent les unes des autres. Par exemple, si je survole ma fonction principale ici, je crée un objet joueur et je crée un objet de tableau. Afin de réaliser les choses étape par étape, nous voulons commencer par la plus petite pièce possible qui ne dépendra de rien d'autre. Et il va également être utilisé et divers autres endroits de ce projet ici qui seront coordonnés. Maintenant, j'ai dit que vous devriez tout écrire vous-même avant de le suivre. Mais ce dossier est très simple. Donc, je vais juste parcourir ce fichier très rapidement avec vous. Et dans les prochaines vidéos de ce projet, vous voudrez essayer vous-même avant suivre étape par étape mes propres explications. Ici, nous avons une classe d'accords qui signifie coordonnée. Cela va représenter une valeur x et y sur le tableau lui-même. Il y aura également une propriété booléenne, qui va représenter si elle a été touchée. Cela signifie donc que si un navire est là et que nous avons deviné cette coordonnée. Maintenant, lorsque nous créons une coordonnée, nous passons simplement x et y par le constructeur et nous l' affectons aux variables locales ici. Nous avons ensuite un getter and setter pour les trois propriétés privées, le x, le y et le booléen. Donc, essentiellement, nous sommes en mesure d' obtenir le x, d'obtenir le y, C Si cette coordonnée est touchée, ainsi que ces valeurs individuelles. Nous avons maintenant une fonction ToString. Chaque fois que nous imprimons un objet sur la console, il exécute la fonction ToString en coulisses. Donc, essentiellement, si nous devions imprimer une coordonnée, elle va imprimer x virgule y. Maintenant, juste pour plus de précisions, si vous ne savez pas ce qu'est un quart. Chaque cellule individuelle ici sera sa propre coordonnée. Par exemple, il s'agit de 0, il s'agit d'un, et ainsi de suite. Nous allons éventuellement créer notre propre conseil d'administration ici. Nous sommes différents navires sont placés au hasard et les colonnes du tableau sont représentées des lettres a à J. Et les lignes du tableau sont représentées des chiffres 0 à neuf. Maintenant, ces valeurs x et y vont représenter où elles se trouvent en fonction des colonnes et des lignes. Et la valeur de la hanche va représenter si cela a été un véritable succès. Par conséquent, nous avons deviné où se trouve un navire. Ici, nous avons un C5, par exemple, pour cette cellule ici. Si je dis C5, alors je vais passer à un x. Donc, cette coordonnée et mon programme ont la valeur change à true. 48. Navires: Créons maintenant notre propre vaisseau. Et avant d'écrire vous-même un code, je suggère fortement que nous examinions le plan de ce cours et exactement les conseils que j'ai donnés ici. Qu'est-ce qu'un navire exactement ? Eh bien, évidemment, dans notre programme ici, si je l'ouvre, cela représentera un vrai vaisseau où nous avons ici quatre coordonnées différentes. Et la situation nous a cinq coordonnées différentes. Il s'agit d'un navire plus petit, il n'y en avait que deux au total, cinq jetons différents. Donc, si nous regardons cette classe, la première chose que nous voyons est une liste privée qui contiendra un certain nombre de coordonnées différentes. Bien sûr, c'est la classe que nous avons écrite dans la dernière vidéo. Comme nous le voyons ici, chaque navire a besoin de sa propre liste de coordonnées, afin que nous sachions exactement où il se trouve. Nous voyons maintenant toutes les tailles de navires possibles ici. Et gardez à l'esprit que chaque commentaire que j'ajoute, comme celui-ci ici, ce bloc de commentaires est conçu pour vous aider autant que possible et vous donner des informations utiles de ce qui se trouve à l'intérieur de ces fonctions. Mais ici, nous avons une méthode statique qui renvoie un tableau entier. Cela va simplement renvoyer 54332. Et si je passe à mon programme et que je le réexécute, nous voyons ici un vaisseau long de cinq. Ici, nous voyons un navire de quatre longs, mais c'est juste une verticale. Nous voyons ici un trois trop long, puis trois autres. Donc, si je devais ajouter un vaisseau de six longs, puis je réexécute ce programme. Nous le voyons maintenant ici. Cela permettra de déterminer nombre de navires différents dans la taille de chaque navire. Gardez donc à l'esprit que pour aller de l'avant par défaut, j'ai 54332. Maintenant, nous avons le constructeur. Et comme cela n'a qu'une seule ligne, je ne peux pas vraiment vous cacher la fonctionnalité, mais c'est évidemment très simple. Nous recevons simplement une liste de coordonnées et nous affectons à la liste des coordonnées locales ici. Ensuite, nous avons également un getter pour les coordonnées et le nombre de coordonnées que nous avons. En gros, obtenir la taille va obtenir la taille du navire comme il le décrit par le nom. qui signifie que, ici, Ce qui signifie que, ici, ces trois listes retourneront trois listes pour en renverser deux et ainsi de suite. Maintenant, ces éléments sont probablement explicites, mais les quelques autres ne l'ont peut-être pas été. Encore une fois, je vous encourage vivement à jeter un coup d'œil aux différents commentaires que j'ai ajoutés. Par exemple, il s'agit d'un index GET qui renvoie un entier et il prend un quart dedans. Et si vous vous en souvenez correctement, un index correspond à l'endroit où un certain élément se trouve dans un tableau ou une liste commence à 0. Ici, la description est que cela renvoie l'index dans la liste des coordonnées où le cordon du périnée a été trouvé. Il s'agit de la coordonnée du périmètre et nous faisons référence à la liste des coordonnées ici. Maintenant, en faisant défiler vers le bas, nous voyons que cela renvoie l'indice de son présent ou celui de votre retour négatif. S'il n'est pas présent. Si vous ne trouvez pas l'index, vous souhaitez renvoyer un indice négatif. Maintenant, nous allons voir si c'est déjà utilisé. Ici, il vérifie si une coordonnée se trouve à l'intérieur du navire. Voici un conseil. Utilisez la méthode d'index GET. Essentiellement, get index devrait renvoyer un indice négatif s'il n'est pas utilisé ou il devrait renvoyer autre chose s'il ne s'agit pas des États-Unis. Et puis, ici, nous avons une fonction plus compliquée, c' est-à-dire qu'elle vérifie si une coordonnée donnée serait un succès. Maintenant, la complexité de cette fonction vient d'un tableau booléen renvoyant. Ce tableau va contenir deux valeurs différentes. Le premier sera booléen, vrai ou faux s'il s'agit d'un succès. Dans le second, il sera booléen, vrai ou faux s' il a coulé le vaisseau. Par exemple, si je suppose quelque chose et que c'est une erreur, nous aurons du faux et du faux. Ici, nous dirons que moi est faux et faux. Si c'est un coup, mais qu'il ne coule pas le vaisseau, il y aura vrai et faux. S'il ne coule pas le vaisseau, il sera vrai et vrai. s'agit des valeurs de retour possibles ce qui concerne la fonctionnalité. Il possède toutes les fonctionnalités d'un vaisseau. Alors allez-y et mettez cette vidéo en pause et essayez d'en ajouter autant que possible, essayez d'aller le plus loin possible. Et une fois que vous avez tout terminé ou que vous avez fait de votre mieux et que vous avez vraiment besoin d'aide supplémentaire. Allez-y et reprenez le reste de cette vidéo et je vais examiner ma solution pour savoir comment j'ai fabriqué le vaisseau. Très bien, donc en commençant par le haut, nous avons ici un indice GET. C'est la première méthode cachée que je n'ai pas encore revue. Passons donc en revue ce que nous essayons de faire. Ici. Nous avons des arguments de coordonnées et nous essayons de voir où c'est exactement dans notre tableau de coordonnées, qui a été stocké localement sur sa classe en haut à droite ici. Essentiellement, il retournera un index ou il retournera un négatif s'il ne le trouve pas. Nous allons donc commencer par parcourir chaque coordonnée individuelle au sein de notre liste. Nous disons que int a est égal à 0, alors que a est inférieur à la taille de la liste coronet, nous allons augmenter une boucle de for-loop assez standard. ici. Nous allons y inclure notre trimestre cible. Et cela changera en fonction chaque itération de la boucle for. Alors que je vais simplement vérifier si la valeur x est égale la valeur X cible et la valeur Y est égale à une valeur Y cible. Si ces deux éléments sont vrais, cela signifie qu'il s'agit de la même coordonnée exacte. Et nous voulions revenir à l'indice actuel, renvoyant simplement un. Maintenant, si cette affirmation n' est jamais vraie, nous allons finalement sortir de cette boucle entière. Et par conséquent, nous allons commencer à en retourner un négatif, ce qui signifie que nous n'avons pas pu le trouver. Il s'agit de la fonction d'index GET. Passons maintenant à la fonction d'utilisation finale, qui utilise simplement la méthode d'index. Ici. Nous créons un booléen appelé est en cours d'utilisation et une affectation égale pour obtenir la transmission d'index et les coordonnées ne sont pas égales à celles négatives. Si négatif signifie que rien n'a été trouvé. Et si quelque chose a été trouvé, cela signifie que quelque chose entre 0 et le nombre total de coordonnées serait renvoyé. Donc, en gros, si l'indice n' est pas négatif, cela signifie qu'il s'agit de nouvelles. Nous pouvons maintenant simplifier ce code. Je l'ai écrit en deux lignes distinctes juste pour que je puisse minimiser cela, car les fonctions monolignes ne peuvent pas être minimisées comme nous le voyons ici. Si je minimise cette fonction, nous voyons toujours le code. Donc en redescendant pour simplifier ce code, je peux simplement retourner, obtenir l'index, passer et coordonner n'est pas égal à négatif. Cela retournera vrai ou faux selon que cette coordonnée n'est pas utilisée pour le navire. Ensuite, nous avons ici la fonction la plus compliquée qui a été frappée. Et encore une fois, cela renvoie un tableau booléen où la première valeur booléenne sera s' il s'agissait d'un accès et une deuxième valeur booléenne sera si elle pense que c'est expédié. Si je développe cela ici, nous allons d'abord obtenir l'indice à partir de notre méthode d'index GET. Et si l'indice est négatif, cela signifie que c'était une erreur. Par conséquent, une erreur devrait renvoyer un tableau booléen avec faux et faux, comme nous le voyons ici. Nous voyons ici cette négative, qui sera exactement la même négative que celle qui sera renvoyée si nous ne trouvons rien. Maintenant, après cela, une fois que nous sommes arrivés à ce code ici, nous savons que nous avons réellement touché quelque chose. Maintenant, ce qu'il dit, voyez si on a vraiment coulé ce vaisseau ou si c'est juste un coup normal. abord, nous allons obtenir la coordonnée à cet indice et nous allons définir sa valeur de hanche sur true. Si vous vous souvenez que dans la classe de coordonnées ici, nous avons cet accès booléen. pourquoi nous assignons maintenant cela à vrai parce que nous avons effectivement touché cette partie du navire. Maintenant, en revenant dans le vaisseau ici, je vais créer un booléen appelé coulé et définir cela comme vrai. Ce qui signifie essentiellement que par défaut nous allons supposer que le navire a coulé. Et puis, ici, nous allons parcourir chaque coordonnée du navire. S'il n'est pas touché, alors ce que l'on veut dire que coulé faux et nous allons sortir de cette boucle. Donc essentiellement, tout ce code fait ici. Il s'agit d'un siège s'il reste des coordonnées qui ne sont pas touchées. Si chaque coordonnée du navire est touchée, le navire coulera alors. Enfin, nous pouvons renvoyer notre tableau booléen. À ce stade du code ici, nous savons qu'il y a eu un vrai succès. Le premier booléen est toujours vrai, mais le second booléen va être vrai ou faux selon qu'il a effectivement coulé la propriété en fonction de sa logique ici. Ce sera la fonction « Dead Hit ». Et c'est probablement la fonction la plus compliquée de la classe de navires. Mais j'espère que toute cette explication est logique pour vous et j'espère que vous avez réduit la plupart de ces fonctionnalités. Maintenant, bien sûr, dans la programmation, il existe de nombreuses façons différentes d'écrire ce même type de code. Donc, si votre code réalise quelque chose similaire à ce que fait le mien, et s'il fonctionne , ne vous inquiétez pas, s'il semble légèrement différent, c'est parfaitement bien tant qu'il fait toujours la même chose. 49. Joueur: Jetons un coup d'œil à la classe de joueurs. s' agit essentiellement de gérer tous les vaisseaux d' un joueur spécifique. Maintenant, dans ce projet, nous n'avons qu'un seul joueur. En gros, c'est ici que nous gérons tous les navires. Je vais donc vous montrer quelques morceaux de code de configuration de base. Mais quand il s'agit de la fonctionnalité réelle du fonctionnement de tout, je vous encourage vivement à essayer d'utiliser mes exemples ici et à écrire la fonctionnalité vous-même, puis à venir retour à la vidéo. L'un d'eux vous a montré mes propres exemples. Pour commencer, nous avons ici une liste de navires, la classe des navires, c'est quelque chose que nous avons fait dans la vidéo précédente. Nous avons également un constructeur ici, qui va recevoir la taille de la planche. Si nous allons à mon dossier principal, nous voyons ici que nous sommes en train de créer un nouveau joueur et que nous passons dans la taille du tableau. Maintenant, en revenant en arrière, nous pouvons également rendre tous les navires, juste un obtenteur très simple. Maintenant, pour aller de l'avant, nous avons une fonction aléatoire. L'objectif est d' attribuer aléatoirement un point de départ un navire en fonction de la taille de la planche et de la taille du bateau. Il faut également s'assurer que le bateau peut réellement s'adapter à la planche. Par exemple, nous avons ici ce bateau de cinq longs. Et si c'était le point de départ, disons J4, où se terminer ici. Ensuite, il y aura quatre personnages, il y aura hors du tableau. Nous ne pouvons pas avoir ça. Nous voulons donc nous assurer que nous pouvons réellement le bateau sur le bord d'Akron. Maintenant, cela renvoie un entier et l'instruction retour indique la position de départ du navire pour s'adapter au tableau. Par exemple, si cette position de départ était juste ici, ce serait six parce que G est l'équivalent de six, je n'affiche que des lettres ici, il est donc facile de distinguer ses lignes ou ses colonnes. Mais disons que ça commence ici. Ce serait six et cela ne correspondrait pas l'ensemble du tableau, car il s' agit d'un navire de cinq longs. Nous avons dix colonnes au total et dix rangées. Six plus cinq équivaut à 11. Nous allions donc passer par un. Il va en revenir cinq à la place. En gros, nous allons nous adapter à ce changement pour nous assurer que la planche peut s'adapter au bateau. En allant de l'avant, ici, nous allons avoir une coordonnée de guitare avec une coordonnée de départ et une coordonnée de fin. Cela va créer une liste de coordonnées à partir d' un point de fin de départ. Un exemple est le début de zéros 0 et la fin de 03. Mais revenons à 00010 à l'objectif c'est de passer ici une coordonnée de départ et une coordonnée de fin ici. Et il retournera ensuite toutes les coordonnées nécessaires pour remplir l'ensemble du navire. l'avant ici est en cours d'utilisation ou nous allons essentiellement vérifier une coordonnée et voir si des navires vont réellement utiliser cela. Ensuite, nous avons placé des navires, ce qui est en fait la fonction la plus compliquée de cette classe. Nous allons diriger le vaisseau, il prend de la taille. Si je vais ici et que cela va renvoyer un nouveau tableau d'entiers. Dans mon cas, j'ai cinq tailles de navires différentes. J'ai cinq longs, euh, pour longtemps. Deux instances d'un navire à trois niveaux, et enfin un long navire A2 avec eux joueur. Ici, je vais courir le point de navire obtenir des tailles pour obtenir tous les navires et attribuer au hasard si chaque navire doit être vertical ou non. Si je rentre dans mon tableau ici, nous voyons que cinq sont horizontaux. Mais ces trois là sont verticaux. Mais ces trois là sont horizontaux. Twitter va affecter aléatoirement un booléen vertical à chaque vaisseau que nous allons essayer de créer. Nous allons également affecter aléatoirement une coordonnée de départ et ajouter la taille du navire pour obtenir la coordonnée de fin. Par exemple, ici, cette coordonnée ARN sera de cinq pour, mais nous allons ajouter la taille du navire pour obtenir la coordonnée de fin ici. Cela va être 94. Gardez à l'esprit que a est fondamentalement 0, c'est pourquoi J a neuf ans. Ensuite, il est écrit un mélange selon lequel toutes les coordonnées permettent au navire de s'adapter à la planche et ne sont pas utilisées par d'autres navires. vous pouvez utiliser les méthodes précédentes que nous avons créées dans cette classe. En fait, s'assurer qu'il s'agit d'une coordonnée unique qui fonctionnera réellement. Ensuite, ajoutez le navire résultant à la liste des navires, qui est déclarée ici en haut. Maintenant, voici un conseil. Les valeurs des coordonnées de départ x et y doivent être randomisées. Par exemple, ici, cette coordonnée 54, sera générée aléatoirement. Mais les coordonnées de fin x et y seront simplement la taille du navire ajoutée à la coordonnée de départ. Par exemple, nous avons ici un navire de cinq longs. Nous allons donc prendre ceci et en ajouter cinq. Il est évident que le départ sera un seul et non 0. Donc, nous allons simplement finir par une seigneurie de cinq. De plus, vous ne devez ajouter qu'au x ou au y, selon qu'il est vertical ou non. Jamais les deux. Donc, ici, a un vaisseau horizontal, ce qui signifie que nous n'ajoutons qu'au y. Nous voyons que le x est quatre. Tout le temps pour ce vaisseau entier correspond uniquement aux valeurs Y qui changent. Par exemple, f à j. Si nous devions les ajouter aux deux, nous aurions ici une grille cinq par cinq avec une plate-forme géante, mais nous voulons une représentation réelle d'un navire. Cela va être un peu plus compliqué, surtout sur un lieu de fonctionnement des navires que la dernière classe. Mais essayez de faire accomplir autant de choses que possible. Et puis, une fois que vous avez l'impression d'être allé aussi loin que possible, ou une fois que vous avez tout terminé, continuez et lisez le reste de cette vidéo afin que vous puissiez jeter un coup d'œil à ce que j'ai fait pour les solutions. Commençons par le haut pour la fonction aléatoire. Si je développe cela ici, je vais commencer par créer un entier aléatoire. Avec une valeur maximale de la taille du tableau. Dans ce cas, entre 09, car la taille de la planche est de dix. Ensuite, je vais dire que même si le nombre aléatoire et la taille du bateau sont supérieurs à la taille de la planche, je vais ensuite soustraire le nombre aléatoire. Jetons donc un coup d'œil à ce bateau de cinq longs ici. Si notre nombre aléatoire a commencé ici, soit six, nous savons maintenant que six plus cinq, parce que six bateaux au hasard ont cinq dans ce cas, ce qui est supérieur à la taille de la planche de dix. Nous allons continuer à le soustraire jusqu'à ce qu' il soit réellement adapté. Dans ce cas, nous ne faisons que soustraire une fois, qui nous donne cette position. Ensuite, nous allons revenir à la nouvelle position de départ. Il s'agit d'une solution permettant de sélectionner un point de départ au hasard et de s'assurer que le point de départ fonctionne réellement en ce qui concerne la taille du bateau et la taille de la planche. Maintenant, nous avons ici toutes les coordonnées. Au début, nous allons dresser une liste de coordonnées, et nous allons également renvoyer cette liste à la fin. Ensuite, nous devons réellement muter ou modifier cette liste de coordonnées afin d'avoir toutes les valeurs souhaitées. Nous allons maintenant ajouter au x ou au y, selon qu'il est vertical ou horizontal. Ici, je commence par vérifier si les valeurs x sont identiques entre le début et la coordonnée Y. Si nous regardons le bateau, par exemple, ici même, les valeurs X sont toujours les mêmes. Ils ont toujours quatre ans. Par conséquent, il y a un bateau horizontal. Cela dit, je dois augmenter continuellement les valeurs Y. Maintenant, ici, je vais obtenir la valeur Y minimale et la valeur Y maximale. Et nous voyons ici que je n'utilise que Git. Pourquoi ? Encore une fois, les valeurs X sont toujours les mêmes. Je vais ensuite parcourir toutes les valeurs Y. Je vais ajouter une nouvelle coordonnée à la liste des coordonnées que nous avons créée ici. Je vais toujours utiliser la même valeur X exacte, mais je vais passer la valeur Y à partir d'une boucle for-loop. De cette façon, la sortie est toujours la même que pour ce bateau, mais la valeur Y change de voix. Maintenant, dans cette instruction else, il s'agit exactement du même concept, mais au lieu de la valeur y, il s'agit de la valeur X. Ensuite, une fois que l'un ou l'autre est exécuté, retournez la liste des coordonnées. aller de l'avant, nous avons maintenant la fonction la plus simple ici, qui va passer une coordonnée et voir si de nos navires va l'utiliser. Donc, en gros, nous parcourons tous les navires. S'il n'est pas utilisé, nous reviendrons vrai. Sinon, nous allons retourner faux. Maintenant, pour aller de l'avant, nous avons la fonction la plus compliquée, qui est de placer tous les navires. Nous allons commencer par parcourir tous les navires possibles que nous voulons. Ensuite, nous allons attribuer aléatoirement un booléen si cela doit être vertical ou non. Nous allons ensuite créer une liste de coordonnées, mais nous n'y attribuerons rien pour l'instant. Vous pouvez maintenant voir un mot clé ou entendre que vous n'êtes pas trop familier avec. Par exemple, quel est ce deux-points principaux ou avant cette boucle while ? Et que faisons-nous exactement ici ? Fondamentalement parce que nous avons notre boucle principale et que nous avons une boucle à l'intérieur. Avec cette boucle for-loop, je dois m' assurer d'étiqueter correctement chaque boucle. Par exemple, si c'est vrai, je veux continuer sur notre boucle while. Mais parce que je suis à l'intérieur de la boucle for-loop, il va supposer que je continue sur la boucle for-loop elle-même. Cela dit, je dois ajouter une étiquette à la boucle while. Et puis je peux continuer sur cette boucle de while spécifique et non dans la boucle for-loop. Jetons un coup d'œil à ce que fait la boucle for. Tout d'abord, il s'agit d'une boucle infinie, qui signifie essentiellement que nous allons exécuter continuellement tout ce code jusqu'à ce que nous atteignions cette instruction de rupture ici. Alors, au début, je vais obtenir ces valeurs de départ x et y. Je vais ensuite les utiliser pour créer des coordonnées de départ. Ensuite, je vais obtenir les coordonnées de fin, mais je ne vais pas les randomiser. Au lieu de cela, je vais dire que l'index et la fin y seront égaux au départ x ou y plus la taille du bateau. S'il s'agit d'un bateau vertical, nous allons prendre le x de départ, et c'est tout. Mais s'il ne s'agit pas d'un bateau vertical, nous allons prendre le x de départ et l'ajouter des deux côtés. Ensuite, c'est l' inverse de la fin. Pourquoi ? S'il s'agit d'un bateau vertical, nous allons prendre le Y de départ et l'ajouter des deux côtés. Sinon, nous allons simplement utiliser un Y de départ puis nous utiliserons ces deux valeurs pour créer une coordonnée de fin. Ensuite, nous allons attribuer une nouvelle valeur à cette liste de coordonnées ici. Cette valeur sera le résultat des coordonnées de la guitare depuis le début et la fin. Cela prendra les coordonnées de début et de fin et tout ce qui se trouve entre les deux et les ajoutera à une liste. Et c'est la fonction que nous avons précédemment créée. Ensuite, je vais parcourir toutes les nouvelles coordonnées que nous venons d'obtenir, et je vais m'assurer qu'elles ne sont pas utilisées. S'ils ne sont pas utilisés, nous allons revenir au début de la boucle While et continuer à essayer encore et encore jusqu'à ce que continuer à essayer encore et encore jusqu'à ce vous trouviez un tas de bateaux qui n' ont pas été utilisés auparavant. Maintenant, si tous les bateaux nous avons trouvé notre exclusivité, ce qui signifie qu'ils ne se chevauchent pas les uns sur les autres. Dans cette boucle for-loop va juste courir à travers elle-même et continuer dans cette instruction break. Maintenant, cette instruction de rupture va sortir de toute cette boucle while. Et puis, ici, nous allons créer un nouveau navire en passant les coordonnées que nous venons d'obtenir, puis passer le navire entier dans la liste des navires juste ici. C'est donc certainement l'une des fonctions les plus compliquées. Je ne crois pas que nous ayons même couvert ces étiquettes ici, mais il y a certainement d'autres solutions qui ne nécessitent pas ces étiquettes qu'il aurait pu trouver. Mais si vous n'étiez pas en mesure d'obtenir la place des navires ou quoi que ce soit d'autre dans la classe de joueurs. Ne vous inquiétez pas, les fonctions spécifiques des navires de l'endroit étaient plus compliquées que la plupart des choses que nous avons couvertes jusqu'ici. 50. Terminer le jeu: Il s'agit de la dernière vidéo sur le projet de cuirassé. Dans cette vidéo, nous allons créer notre classe de planche et notre classe cuirassé. Commençons donc par la classe de support, que nous faisons un sous-marin de la Nouvelle-Angleterre au sein de notre fonction principale. Et ici, nous passons dans la taille du plateau ainsi que le joueur que nous avons déjà créé. Maintenant dans la classe du tableau, je vais passer en revue quelques fonctionnalités de base, puis je vais passer en revue les concepts derrière ces différentes fonctions ici. Vous pouvez donc aller de l'avant et essayer de les fabriquer vous-même. Et une fois que vous êtes bloqué ou que vous avez terminé la fonctionnalité, vous pouvez alors voir à quoi ressemble mes solutions. Donc, à partir de là, nous avons un entier pour la taille du tableau. Cela vient simplement du paramètre réel. Ensuite, nous avons également un tableau de caractères multidimensionnel. Ce sera le tableau lui-même. Par exemple, il s'agit de l'index 0, l'index un, de l'index 10, etc. Ensuite, nous avons une liste de lettres qui contient toutes les lettres différentes pour les identificateurs de colonnes. Donc, en gros, toutes les lettres que nous voyons ici. De cette façon, nous n'avons pas un 00 comme coordonnée ou 10 comme coordonnée où il n'est pas clair quelles sont les colonnes et quelles sont les lignes utilisant des lettres. Cela est très clair. Lequel est les colonnes et les lignes. Ensuite, nous avons accès à un joueur ici, que nous venons d' obtenir du périmètre. Et donc nous ne faisons que l' attribuer ici. Nous sommes d'abord en train de créer un plateau de jeu, que nous allons jeter un coup d' œil ici dans un instant. Ensuite, nous allons placer les vaisseaux pour créer le plateau de jeu. Cela va remplir chaque coordonnée avec le tableau avec un certain caractère d' espace. Ainsi, par exemple, les zéros d'index de carte, 0 est égal à l'espace. Bien sûr, vous ne devez pas attribuer manuellement chacun de ces éléments. Cela devrait se faire au moyen d'une boucle for-loop. En allant de l'avant, nous avons placé des navires. Cela va passer en boucle à travers le joueur dot get vaisseaux. Et pour revoir cela très rapidement, sous les navires se trouvent ici. Cela renvoie simplement une liste de tous les vaisseaux attachés à ce joueur. Nous allons donc obtenir tous les vaisseaux avec un joueur, puis nous allons obtenir les coordonnées des navires afin d' obtenir les valeurs x et y. Si nous entrons dans la classe des navires, nous voyons ici obtenir des coordonnées. Et cela renvoie simplement une liste de toutes les coordonnées associées à ce vaisseau. Nous allons ensuite attribuer la taille du navire comme personnage du tableau X et du tableau. Pourquoi ? Par exemple, ici, ces cinq caractères longs, chaque index individuel du tableau, par exemple celui-ci, celui-ci et ainsi de suite sont appelés cinq, car il s'agit des cinq longs navires ici. C'est le navire à quatre longs. Ici, nous avons les trois longs navires. Les personnages vont donc être de la taille de ce bateau. De cette façon, il est très clair où le bateau commence et s'arrête. Et voici un conseil. Un entier sera comptabilisé comme un caractère, mais pas comme vous le souhaitez. Vous devez convertir la taille du point d'expédition en une chaîne avec la valeur de point de chaîne de , puis accéder au premier caractère des résultats. La raison en est que chaque personnage individuel aura un nombre associé quand il s'agit de sa valeur ascii, ce qui ne sera qu'une table de ce chaque caractère individuel de votre clavier représente une valeur numérique. Vous pouvez aller de l'avant et Google ascii valeur ou ascii table pour mieux comprendre ce dont je parle. Mais cela dit, vous devez vous assurer que vous convertissez réellement taille du navire en nombre réel que vous voulez, car par défaut, il ne représentera pas le nombre réel. Mais en gros, cela signifie que la taille du point de livraison va renvoyer un numéro que vous ne vous attendez pas. Et donc vous devez d' abord la convertir en chaîne avec la valeur de point de chaîne de. Ici, nous allons obtenir un index de lettres. Et vous pouvez voir cette fonction ici car elle ne fait qu' une seule ligne. Mais passons en revue très vite. Ici, nous allons revenir en Amérique la valeur de chaque lettre du tableau de lettres. Nous passons donc une certaine lettre ici. Et c'est l'alphabétisation qui pourrait être un index de, et nous allons renvoyer l'index de cette lettre à partir du tableau de lettres qui définirait une fraude apparaîtra. Par exemple, a serait 0, et ainsi de suite. Maintenant, nous allons essayer d' atteindre certaines coordonnées. Cela verrait si une coordonnée serait un succès ou non. Nous allons transmettre les valeurs x et y de la coordonnée, et elle va renvoyer une chaîne. Si nous l'avons manqué, il reviendra ici. Si nous frappons, il reviendra ici. S'il s'agit d'un coup, cela coulerait un navire, il reviendrait, vous coulez leur cuirassé. Maintenant, nous avons enfin deux cordes. Chaque fois que nous imprimons un objet sur la console, fonction IF est appelée. Nous pouvons donc remplacer cette méthode pour la réaliser. Donc, chaque fois que nous imprimons la carte sur la console, nous allons imprimer exactement ce que nous voulons, ce qui sera la carte complète, comme nous le voyons ici. Ceci est imprimé parce que notre classe de navires de copain, chaque fois que nous exécutons la boucle de jeu, nous allons imprimer le tableau réel, mais nous couvrirons cela ici dans un instant. Cela va parcourir toutes les coordonnées du tableau et imprimer les caractères corrects là où ils devraient se trouver. Et un conseil est d'imprimer d'abord les étiquettes des colonnes, c' est-à-dire les lettres, comme vous pouvez le voir ici. Ensuite, imprimez chaque ligne une par une, commençant par le numéro de ligne, puis chaque coordonnée de cette ligne, nous allons simplement imprimer le numéro de ligne. Ensuite, nous allons passer en revue et ajouter une coordonnée individuelle. Et gardez à l'esprit que ces lignes ici, également appelées tuyaux, sont maintenues en maintenant la touche Maj enfoncée et en appuyant sur la barre oblique inverse, juste au-dessus d'Entrée. Ensuite, j'ai un espace. Ensuite, j'ai le contenu réel de la coordonnée individuelle, puis un autre espace suivi d'autres lignes. Cette fonction ici va donc renvoyer une chaîne qui représente l'intégralité de ce tableau ici. Il s'agira de la classe du conseil d'administration. Allez-y et essayez de progresser autant que possible sur ce point, puis revenez voir mes solutions. Ensuite, nous passerons les concepts de la classe cuirassé, qui n'a que deux fonctions principales. Mais pour l'instant, passez revue la fonctionnalité du tableau et essayez d'en faire autant que possible. Très bien, j'espère que vous avez pu ajouter la fonctionnalité de la classe de tableau, ou vous avez pu aller aussi loin que possible. Passons maintenant en revue ma solution pour savoir comment j'ai implémenté ces fonctionnalités. Nous avons donc créé une planche de jeu. Si j'étends cela, nous allons parcourir chaque tableau individuel du tableau. Ainsi, chaque ligne individuelle sera un tableau imbriqué dans le tableau multidimensionnel ici. Je vais ensuite remplir toute cette rangée d'un espace. Et si vous avez créé une boucle imbriquée pour aller de l'avant et le faire, c' est également très bien. Comme je l'ai déjà mentionné, il existe plusieurs façons de résoudre chaque problème en matière de développement logiciel. Si vous avez écrit ce code, c'est très bien. Si vous avez écrit du code similaire à celui-ci, cela fonctionne toujours. C'est très bien aussi. Ensuite, nous allons examiner les navires de la place. Si j'étends cela, nous allons parcourir chaque vaisseau que possède le joueur. Ensuite, nous allons parcourir chaque coordonnée de ce vaisseau. Nous allons obtenir les valeurs x et y à partir de ces coordonnées. Et nous pouvons alors attribuer les index XX et XY à cette expression ici. Cela revient à ce que je mentionnais d'utiliser la taille du navire transmise en valeur de point de chaîne de poussière parce que nous recherchons un caractère spécifique et chaque personnage a sa propre valeur entière. Comme il s'agit d'un tableau de caractères, nous ne pouvons pas simplement lui attribuer un entier car chaque caractère individuel votre clavier est représenté par un entier spécifique. Et il va supposer que ce sera réellement le cas. Par exemple, le caractère 0 tel que représenté par le numérique 48, le caractère représenté par le chiffre 49, etc. Ce que nous voulons faire, c'est nous assurer que nous utilisions réellement la bonne chaîne. Nous allons prendre la taille du navire et le passer dans une ficelle. Mais bien sûr, cela nous donne une variable de chaîne lorsque nous voulons une variable de caractères. Nous pouvons donc simplement accéder au caractère à l'index 0, qui n'a qu' un seul index car il n' a qu'une valeur à un seul chiffre. Mais en gros, cela convertira la taille du navire de cinq en personnage cinq , puis l'attribuera à la bonne position du tableau ici. Cela passera donc par tous les navires et il suffit de placer les 5 à l'endroit où se trouve les cinq longs navires. Les trois sont, les trois longs navires sont et ainsi de suite. aller de l'avant, nous avons obtenu l'index des lettres qui a été couvert plus tôt sur une seule ligne de code FSS. aller de l'avant encore, il, on va essayer de frapper certaines coordonnées. Nous allons donc d'abord créer une coordonnée avec les valeurs X et Y. Et ensuite, nous allons parcourir chaque vaisseau pour ce joueur exact. Si vous vous souvenez de la classe des navires, nous avons une fonction de frappe en passant à cela. Ici, cela va renvoyer un tableau booléen où la première valeur sera s'il s'agissait d'un accès et la deuxième valeur sera si elle coule le vaisseau, false. Faux signifie que c'était un gâchis. Vrai faux signifie que c'était un coup, mais il n'a pas coulé ce vaisseau. Et vrai, vrai signifie qu'il a frappé et qu'il a coulé ce vaisseau. En revenant à mon tableau ici, je vais avoir accès à toutes les données de succès. Ensuite, je peux créer deux Booléens distincts. Ou est-ce que frappé est l'indice 0 et le sink va être index1 avec le zinc est allé voir s'il est vrai. Si c'est le cas, nous allons sortir X de cette coordonnée spécifique. Par exemple, si j' exécute le programme ici, je peux sélectionner B1 pour le représenter ici. Je peux entrer B1 et ça change ce trois en x parce que c'était un vrai succès. Et il renvoie également le coup de chaîne ici. Donc, pour ce faire, ici, nous allons revenir si un couloir utilisant un opérateur ternaire, nous allons nous retourner penser qu'ils sont cuirassés, mais sinon nous reviendrons frappés. Et c'est en fait de là que vient la force que nous voyons ici dans notre console. Maintenant, après cette boucle for-loop, si rien ne correspondait réellement, cela signifie qu'il a manqué. Donc, nous allons simplement renvoyer la corde ratée. aller de l'avant, nous avons une fonction ToString. Cela va simplement imprimer l' intégralité du tableau à l'écran. Nous allons utiliser une classe StringBuilder. Et il n'y a rien de mal à utiliser une chaîne normale et à l'ajouter. Ils vont essentiellement faire la même chose. Mais j'utilise un StringBuilder, qui me permet simplement d'ajouter plus de choses à la chaîne de manière plus propre. Mais dans les coulisses, il ne fait que s'ajouter à une corde. Je commence par ces espaces supplémentaires. Parce que si je vais à mon programme, c'est ce que nous voyons ici même avec le texte surligné. Il s'agit des espaces de départ permettant de s'assurer que les étiquettes des colonnes sont alignées avec chaque colonne individuelle. Ensuite, je mérite quelque chose connu sous le nom de délimiteur, que vous pouvez considérer comme un séparateur. Et ce sera un espace suivi d'un tuyau, suivi d'un autre espace. Et c'est ce que nous voyons ici entre chaque personnage individuel pour la coordonnée exacte. Ensuite, je vais ajouter un commentaire. Je vais dire que cela va s' ajouter aux colonnes. Je vais donc parcourir la taille de la planche car les planches sont toujours un carré parfait. Je peux parcourir la taille de la planche deux fois différentes. L'un pour ajouter les colonnes, autre pour ajouter les lignes et le contenu individuel. Ici, je vais ajouter les lettres point get a, qui commenceront à 0 et boucle sur toute la taille du tableau, c'est pourquoi nous voyons cela ici. Je peux maintenant parcourir tout ça. Ensuite, nous allons ajouter le délimiteur à la chaîne réelle, ajoutant essentiellement l'espace, le tuyau et l'espace supplémentaire. Mais nous ne voulons pas le faire quand il s'agit du tout dernier élément ici, comme nous le voyons, j n'a pas de ligne supplémentaire à la fin. Pour vérifier cela, nous pouvons dire si a est inférieur à la taille de la bordure moins un, si je devais changer cela, et que je vais l'exécuter une fois de plus, nous verrons une ligne supplémentaire sur le bord de j. Ce que je n'aime pas vraiment, mais c'est à vous de choisir si nous voulons avoir cela. Je vais donc revenir à ce que c'était. Maintenant, nous allons de l'avant. Une fois que nous aurons ajouté toutes les colonnes, nous allons ajouter une nouvelle ligne à l'aide du caractère d'échappement à quatre barres obliques . D'ici. Il va ensuite passer à la ligne suivante juste ici. Nous allons maintenant ajouter à chaque ligne individuelle le contenu réel du tableau. Donc, essentiellement, nous allons avoir une boucle for imbriquée, en boucle, deux fois, une pour les valeurs x et une pour les valeurs y. À l'intérieur de cette boucle pour imbriquée. Nous allons ensuite avoir a et B, qui peuvent représenter x et y. En fait, pour faciliter les choses, je vais cliquer près de a, et je vais appuyer sur Maj et F6 et le renommer en x. Ensuite, je vais faire la même chose comme être shift et F6 et je peux changer cela en y. Maintenant, cela nous rend plus clairs lorsque nous accédons aux valeurs du tableau ne font que boucler tout le x et coordonnées y pour les valeurs possibles. Maintenant, une chose que je veux faire, c'est quand y a 0, cela signifie que nous sommes au tout début ici. Nous voulons donc ajouter au numéro de ligne, par exemple 012 et ainsi de suite. Nous allons donc ajouter à cela ici, puis nous allons ajouter le délimiteur, c'est-à-dire un espace, un espace de tuyau, que nous voyons ici. Ensuite, nous allons ajouter chaque personnage individuel. Nous allons ajouter au tableau à l'index X et à l'index y. Voici 00, ici 01, c'est 0, à 10, et ainsi de suite. Maintenant, la plupart d'entre eux seront des espaces, mais bien sûr, lorsque les navires ont été créés, on mais bien sûr, lorsque les navires ont été créés, leur a placé des caractères aléatoires spécifiques avec l'endroit où les bateaux devraient se trouver. suite, nous ajoutons simplement le délimiteur de cette façon après avoir imprimé cet espace ici, nous aurions un autre espace avec un tuyau et autre espace pour créer espace blanc pour facilite la lecture de tout. Ensuite, nous allons ajouter une nouvelle ligne. C'est ce qui va prendre cette ligne ici et l'enrouler jusqu'à la rangée suivante. Ensuite, à la fin de la fonction, nous allons renvoyer les résultats à ToString, renvoyant simplement la chaîne que nous venons de créer. C'est donc tout quand il s'agit du tableau réel et de l' impression des choses. Si c'était compliqué pour vous, ne vous inquiétez pas, c'est tout à fait normal. Ce projet a ici pour objet d'avoir des aspects faciles et des aspects difficiles. S'il est coincé dans ces parties, ne vous inquiétez pas, c'est parfaitement normal. Mais maintenant que nous avons créé notre classe de planches, passons à notre classe de cuirassé et examinons les deux dernières fonctions dont nous avons besoin pour que tout fonctionne. Jusqu'à présent, nous avons créé un joueur et créé un tableau. Et maintenant, nous allons courir, lancer une boucle de jeu en passant dans notre plateau. Il existe deux fonctions similaires à celles du reste de ce projet. Je vais expliquer les concepts derrière cela, puis vous pourrez aller de l'avant et voir ce que vous pouvez faire avec ces concepts, puis vérifier ma solution par rapport à la vôtre. Voici donc une description du fonctionnement de cette boucle de jeu. Nous allons créer une boucle infinie qui fera six choses différentes. La première consiste à dessiner le plateau de jeu actuel, imprimant simplement cet objet de plateau à l'écran parce que nous avons créé une fonction ToString ici. Chaque fois que nous imprimons un objet port, il exécute cette fonction. Ensuite, nous allons imprimer la dernière action. Il s'agissait donc soit d'un raté, d'un coup, soit de couler leur cuirassé. Nous allons réellement vouloir créer cette chaîne mentionnée ici avant notre boucle sauvage. Ensuite, nous allons demander à l' utilisateur des coordonnées, ou il pourra entrer la chaîne quitte. Comme nous pouvons le voir ici, en bas, entrez la coordonnée. Voici un exemple, ou quittez pour arrêter de jouer. Si je suis en train de quitter, il va fermer le programme. En gros, nous allons revenir de cette fonction. Remarquez que quatre sont ce que je viens de décrire. Quittez le jeu. Si on a arrêté de fumer, c'est cinq. C'est là que se trouve la plus grande partie de la logique. La cinquième étape consiste à vérifier si la coordonnée est valide. En gros, ce qui signifie qu'il va falloir des personnages individuels. La première est une lettre valide qui fait partie de ce tableau ici. Et le second est un nombre valide compris entre 09 si l'un ou l'autre est faux ou qu'il ne s'agit pas d'une chaîne de caractères, il va continuer à leur demander les coordonnées correctes. Par exemple, si je lance ça et que j'entre ou simplement un, ça me demandera à nouveau, si j'entre Z 0, ça me demandera à nouveau, si je saisis un 0, ça fonctionnera réellement. Il doit s'agir d'une coordonnée valide. Et c'est en fait ce que nous allons faire dans cette prochaine fonction ici. Mais je vais décrire qu' une fois que nous y arriverons, nous allons d'abord vérifier si une coordonnée était valide. Si c'est le cas, nous allons essayer d'atteindre ces coordonnées. Ensuite, nous allons stocker la dernière chaîne d'action pour l'imprimer une fois que la carte sera affichée lors de la prochaine itération de la boucle. C'est pourquoi j'ai mentionné ici. Fondamentalement, nous allons avoir une chaîne avant une boucle while, mais nous allons évaluer la valeur une fois que nous aurons déterminé s'il s'agit d'une coordonnée valide. Et après avoir essayé d' atteindre cette coordonnée, cette façon, lorsque nous revenons au début, nous allons dessiner la table de jeu actuelle. Nous allons imprimer la dernière action. De cette façon, le plateau de jeu ne le cache pas et nous continuerons ensuite. Si la coordonnée n'est pas valide , nous allons revenir à la troisième étape, qui se trouve ici. Demandez à l'utilisateur une entrée de coordonnées ou saisissez Quitter. Voici ce que nous allons faire pour faire une boucle encore et encore, s'ils ne saisissent pas de coordonnées valides. Et c'est ici que toutes les parties du jeu se rejoignent. Maintenant, cette fonction va utiliser cette fonction suivante qui est une coordonnée valide. Nous allons transmettre une chaîne, qui sera l'entrée réelle de l'utilisateur. Lorsque je saisis b5 ici, la chaîne B5 va être entrée dans ce paramètre ici. Nous allons également avoir une planche. Et si nous examinons la description exacte ici, cela va vérifier si l'entrée de l'utilisateur est valide. Il y a maintenant deux exigences. La première est qu'elle doit comporter une chaîne de deux caractères. La prochaine, c'est qu'il doit s'agir d'une lettre. Il a à J seulement, suivi immédiatement d'un nombre qui est compris entre 0 et neuf seulement. Maintenant, l'entrée de la pointe est reçue et les chaînes. Ainsi, obtenir une valeur int du deuxième caractère, qui doit être comprise entre 0 et neuf, n' agira pas comme 0 à neuf. Au lieu de cela, il va agir comme s'il s'agissait de valeurs de graphiques ascii, que j'ai mentionnées plus tôt dans cette vidéo. Cela signifie que le caractère 0 équivaut à l'entier 48 et le caractère un égal à l'entier 49, et ainsi de suite jusqu'à ce que le caractère neuf soit égal à l'entier 57. Pour vérifier si la chaîne entrée du deuxième caractère est comprise entre 0 et 9. Vous avez dit vérifier si sa valeur entière est supérieure ou égale à 48 et inférieure ou égale à 57, ce qui signifie que 0 est égal à 489 égal à 57. Nous voulons donc être à l'intérieur de ces deux valeurs ici. Allez-y et écrivez la fonctionnalité pour cela. Je suggère de commencer par la fonction de coordonnées est valide car elle est requise pour la boucle de jeu. Et une fois cela fait, allez-y et essayez de vous attaquer à la boucle du jeu. Ensuite, vous pourrez comparer vos solutions à la mienne. Commençons par la coordonnée est valide. Si je développe cela, voici d'abord si la longueur de la chaîne n' est pas égale à deux. Si c'est exact, nous allons renvoyer false car il doit s'agir d'une chaîne de deux caractères. Par exemple, si j'entre B5, qui comporte trois caractères, il va me demander à nouveau si j'ai passé le test, ce qui ne comporte pas deux caractères. Ça va me demander à nouveau, et ça continuera de lui demander à nouveau jusqu'à ce que j'entre des coordonnées valides telles que J nine. Maintenant, c'est évidemment un gâchis, mais ça a vraiment fonctionné. Ensuite, je vais créer un tableau de caractères pour séparer les coordonnées exactes en caractères individuels. La première chose à faire avec ces informations est de vérifier si la lettre existe réellement. Board app.get Index des lettres, comme nous le voyons ici, il va renvoyer l'index de toutes nos lettres ici. qui signifie que s'il n'existe pas, il va en retourner un négatif. Cela permettra essentiellement de s'assurer que le J a été utilisé. Si ce n'est pas le cas, nous allons simplement retourner faux. Mais s'il est utilisé, nous allons continuer et passer à autre chose et vérifier les valeurs suivantes, qui seront de 0 à 9. Ici, nous créons un entier et une chaîne est égale à un caractère. N'oubliez pas que le tableau est un tableau de caractères, ce qui signifie qu'il s'agira caractères individuels dont nombres les représentent. Par exemple, le caractère 0, représenté par un entier 48. caractère 1 est représenté par un entier 49, et ainsi de suite. Nous allons nous assurer qu'il s'agit de neuf en voyant si la valeur est supérieure ou égale à 48 anions. Si la valeur est inférieure ou égale à 57. Si cette condition est vraie ici, cela signifie que tout est correct lorsqu'il s'agit de l'entrée utilisateur valide. Défilons maintenant vers le haut et créons la fonction finale pour tout ce projet, qui est exécuté la boucle de jeu. Je vais prendre toutes les fonctionnalités et assembler pour être réellement utilisable. Si j'étends cela, nous allons commencer par créer un scanner. Et nous allons créer une chaîne, appelée dernière action. Et nous attribuons cette valeur égale à null. Nous allons attribuer cela plus tard. Ce sera soit le gâchis, soit le coup, soit les États-Unis ont coulé leur corde de cuirassé. Et nous allons aller de l'avant et faire cela premier parce que nous voulons imprimer le tableau. Et immédiatement après, nous allons imprimer la dernière action. De cette façon, il n'est pas automatiquement remplacé par le tableau. Par exemple, si je devais imprimer cela à l' avance, une heure pour nous faire courir. Si je saisis un 0, par exemple, le tableau le couvre. Si je fais défiler ici, on voit le gâchis. C'est pourquoi nous devons créer une chaîne en dehors de la boucle while. Il ne sera donc pas réinitialisé à chaque fois, et nous pourrons ensuite l'imprimer s'il existe réellement. Ensuite, nous allons créer une chaîne appelée coordonnées, qui va recevoir l'entrée de l'utilisateur. Ici, nous avons une boucle do-while, qui si vous vous souvenez, en gros, cela va exécuter ce code exact au moins une fois, quoi qu'il arrive. Ensuite, il continuera à exécuter ce code tant que cette expression est vraie ici. Jetons donc un coup d'œil à ce qu'est ce code à l'intérieur. Ici, nous imprimons les coordonnées internes, par exemple un 0 ou quittons pour arrêter la lecture. Nous allons ensuite obtenir le mot suivant que l'utilisateur saisit. Et nous allons convertir cela en majuscules. Donc, tout ce qui ressemble à un 0 en minuscules deviendrait Israël majuscule. Et cela nous permet de comparer plus facilement les choses. suite, nous allons simplement voir si l'entrée a été abandonnée. Si c'est le cas, nous reviendrons de la fonction principale, qui reviendrait ici, puis quittera simplement le programme principal. Mais en supposant qu'ils ne soient pas entrés dans l' arrêt, nous allons alors voir s' il s'agit d'une coordonnée valide. Nous allons également utiliser un opérateur NOT ici. En gros, si ce n'est pas une coordonnée valide avec la carte d'extrémité de cordon donnée, nous allons continuer à vivre jusqu' à ce que l'utilisateur entre une coordonnée valide. Mais s'ils entrent des coordonnées valides, nous allons continuer et exécuter tout ce code ici, commençant par obtenir un tableau de caractères. Et c'est un concept similaire à ce que nous avions auparavant avec la fonction de coordonnées is valide, nous allons obtenir un tableau de caractères avec l'index 0 va être la lettre et l' index sera le numéro. Donc, en faisant défiler vers le haut, nous allons obtenir la colonne qui est le point du tableau obtenir l'index des lettres, l'index du tableau 0. Maintenant, obtenir l'indice de ceci va fondamentalement convertir de a à J en un 0 à neuf. L'utilisateur voit un à J, mais le programme n'utilise pas réellement un à J. Nous utilisons des nombres différents pour les colonnes réelles. Donc, jusqu'à 0 à neuf. Et c'est en fait l'index de chaque personnage individuel. Si nous allons à notre tableau, il y a l' indice 0, l'indice 1, jusqu'à l'indice neuf. Obtenir l'index de cette liste va nous donner la bonne coordonnée Y, ce qui nous donne la colonne. Maintenant, pour la ligne, nous allons simplement prendre ce caractère exact et nous allons soustraire 48 pour les mêmes raisons que celles que nous voyons ici avec tous les exemples ascii. En gros, le caractère 0 est égal à 48. Donc, si nous soustrayons 48, cela signifie que tout nombre que nous avons sera un entier valide. Il remonte ici. La dernière action va égaler le tableau pour tenter de frapper, en passant dans la ligne et la colonne. Et cela va appeler la fonction de frappe de tentative, qui ferait ensuite une boucle voir si un navire était réellement là. Et puis retournez une ficelle, selon si j'ai effectivement frappé ou si elle a manqué ou si un saint ce vaisseau. Et c'est ainsi que fonctionne tout ce programme. Si je l'exécute encore une fois, maintenant que nous voyons comment tout fonctionne, je peux maintenant entrer B3, par exemple. Et ça va s'exagérer. Si j'entre en b2, qui est au-dessus, ça va dire Mademoiselle. Et je peux continuer à entrer en B4, B5. Enfin, soyez six ans. Et maintenant, il est dit : pensez-vous qu'ils sont cuirassés ? Parce que toutes les coordonnées sont maintenant supprimées pour ce vaisseau. Et maintenant, nous avons un jeu de cuirassé solo complètement fonctionnel, que nous avons construit ensemble en utilisant Java. 51. Conclu: Cela conclut l'intégralité de mon cours Java pour débutants. Je tiens à vous remercier d'avoir suivi ce cours. Et si nous voulons en savoir plus sur le développement logiciel à partir de mes tutoriels , consultez ma chaîne YouTube, les clés usées.