[JAVA] C # (base de l'encapsulation)

Sortie basée sur Java sur l'encapsulation de base de C # faite dans le passé

Différences entre les modificateurs d'accès public et privé (il y en a d'autres, mais ces deux sont recommandés pour les débutants) Cela dépend si vous voulez le rendre "accessible" ou "inaccessible"

Rendre visibles uniquement les fonctions que vous souhaitez utiliser

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SampleRPG
{
    class Program
    {
        static void Main(string[] args)
        {
            Player player = new Player("Takashi", 500);
            
            player.Hp -= 2000;
            Console.WriteLine("HP est" + player.Hp);
        }
    }
}

Player.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SampleRPG
{
    class Player
    {
        //Déclarer une variable de membre privé
        private string name;
        private int hp;

        //Ci-dessous, nous définissons les constructeurs publics et les méthodes membres
        public Player(string name, int hp)
        {
            this.name = name;
            this.hp = hp;
        }

      
        public int Hp
        {
            set //Définir les éléments traités
            {
                this.hp = value;
                if (this.hp < 0)
                {
                    this.hp = 0;
                }
            }
            get
            {
                return this.hp; //Obtenez la puissance actuelle
            }
        }
        public String Name
        {
            set //Définir les éléments traités
            {
                this.name = value;
                if (value.Length < 8)
                {
                    this.name = value;
                }
            }
            get
            {
                return this.name; //Obtenir le nom actuel
            }
        }
        /*public void SetName(string name)
        {
            
            if (name != null)
            {
                int len = name.Length;
                
                if (len <= 8)
                {
                    this.name = name;
                }
            }
        }

        
        public string GetName()
        {
            return this.name;
        }*/

        public void Attack()
        {
            Console.WriteLine(this.name + "Attaqué");
        }

        public void Defense()
        {
            Console.WriteLine(this.name + "Défendu");
        }
    }
}

Supplément 1

Bien qu'il soit basique, c'est le même que java, et la valeur actuelle est acquise (get) par le getter et acquise par le setter (set) pour traitement.

Contrairement à "JAVA", "C #" a un mécanisme appelé propriétés. Les getters et les setters peuvent être simplifiés.

 public int Hp
        {
            set
            {
                this.hp = value;
                if (this.hp < 0)
                {
                    this.hp = 0;
                }
            }
            get
            {
                return this.hp;
            }
        }

Supplément 2

mot-clé statique

Les membres statiques sont des valeurs appartenant à des situations de classe et ne peuvent pas être référencés une fois attachés.

Supplément 3

Appelez le constructeur de votre classe

 public Person(string name,int age):this(name)
        {
            
        }

Problème d'application

Q Créez une classe Monkey et implémentez le traitement suivant à partir de la classe MonkeyApp. (Toute accessibilité peut être publique) [Exemple d'exécution] Choisissez un nom curieux:> Toshi Décidez de l'âge des curieux:> 3 Que voulez-vous que Curious fasse? 1 ... Salutation, 2 ... Takema, 3 ... Debout, 4 ... Fin> 1 Bonjour, je m'appelle Toshi (3 ans). Ravi de vous rencontrer! Que voulez-vous que Curious fasse? 1 ... salutation, 2 ... Takema, 3 ... à l'envers, 4 ... fin> 2 Toshi a bien monté le cheval de bambou! Que voulez-vous que Curious fasse? 1 ... salutation, 2 ... Takema, 3 ... à l'envers, 4 ... fin> 3 Toshi s'est retourné! Que voulez-vous que Curious fasse? 1 ... salutation, 2 ... Takema, 3 ... à l'envers, 4 ... fin> 4 Quittez l'application.

Créer une application Monkey

Monkey.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MonkeyApp
{
    class Monkey
    {

        public String name;
        public int age;

        public Monkey()
        {
            
        }

        public void Info()
        {
            Console.WriteLine(this.name);
            Console.WriteLine(this.age);
        }



        public void reverse()
        {
            Console.WriteLine("Bonjour+" + this.name + "(" + this.name + ")est. Ravi de vous rencontrer!");
        }
        public void Take()
        {
            Console.WriteLine(this.name + "Habilement monté sur Takeuma!");
        }

        public void Defense()
        {
            Console.WriteLine(this.name + "Je me suis retrouvé à l'envers!");
        }
       
        public void Lust()
        {
            Console.WriteLine("Quittez l'application.");
        }
    }
}

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MonkeyApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Monkey monkey1 = new Monkey();
            Console.Write("Veuillez décider du nom du curieux> ");
            monkey1.name = Console.ReadLine();
            Console.Write("Quel est votre nom?: ");
            monkey1.age = int.Parse(Console.ReadLine());

            Console.Write("Que voulez-vous qu'Aosaru fasse? 1 ... salutation, 2 ... Takema, 3 ... à l'envers, 4 ... fin>");
            var select = int.Parse(Console.ReadLine());
            switch (select)
            {
                case 1:
                    monkey1.reverse();
                    break;
                case 2:
                    monkey1.Take();
                    break;
                case 3:
                    monkey1.Defense();
                    break;
                case 4:
                    monkey1.Lust();
                    break;
            }
        }
    }
}

Endroit bouché

//Monkey.cs
Monkey monkey1 = new Monkey();

//Program.cs
public Monkey(){}

J'aurais dû voir et décrire cela dans "Java Beans" plusieurs fois ...

Exercice 1 (Il est difficile de penser à une personne dans le passé sans penser à la ramification sans penser à la personne qui le résout.)

Q1 Créez une classe Human et réalisez le traitement suivant à partir de la classe HumanApp. (Toute accessibilité peut être publique)

[Exemple d'exécution 1] Quel est votre poids actuel? :> 70 Quel est votre poids cible? :> 50 Combien de kilomètres parcourez-vous aujourd'hui pour atteindre votre objectif? 1… 10 km, 2… 20 km, 3… 30 km, 4… informations actuelles, 5… fin> 1 J'ai perdu 1kg! Faisons de notre mieux dans cette condition! Combien de kilomètres parcourez-vous aujourd'hui pour atteindre votre objectif? 1… 10 km, 2… 20 km, 3… 30 km, 4… informations actuelles, 5… fin> 2 J'ai perdu 5 kg! Faisons de notre mieux dans cette condition! Combien de kilomètres parcourez-vous aujourd'hui pour atteindre votre objectif? 1… 10 km, 2… 20 km, 3… 30 km, 4… informations actuelles, 5… fin> 3 J'ai perdu 10 kg! Faisons de notre mieux dans cette condition! Combien de kilomètres parcourez-vous aujourd'hui pour atteindre votre objectif? 1… 10 km, 2… 20 km, 3… 30 km, 4… informations actuelles, 5… fin> 4 Je suis mince de 16 kg! 4kg restants! faisons de notre mieux! Combien de kilomètres parcourez-vous aujourd'hui pour atteindre votre objectif? 1… 10 km, 2… 20 km, 3… 30 km, 4… informations actuelles, 5… fin> 3 Objectif atteint! Félicitations! [Exemple d'exécution 2] Combien de kilomètres parcourez-vous aujourd'hui pour atteindre votre objectif? 1… 10 km, 2… 20 km, 3… 30 km, 4… informations actuelles, 5… fin> 5 Quittez l'application.

Exercice 2

Préparez deux jeux de cartes à jouer (54 au total) contenant des nombres de 1 à 13 et deux jokers. Tirez au hasard deux jeux de cartes à jouer et réalisez le processus de sortie lorsque les deux sont tirés avec le même numéro. "conditions" 1 Vous pouvez dessiner jusqu'à 5 fois 2 Si l'un des deux tire le joker, le nombre qui peut être tiré augmente de 1. 3 Si vous piochez tous les jokers, vous perdez et le jeu s'arrête là. Cependant, le nombre de cartes tirées diminuera. L'exemple A 3 a été dessiné Nul 4 Pardon

L'exemple B 1 a été dessiné J'ai dessiné un joker Le nombre de fois que je peux dessiner a augmenté de un

L'exemple C 5 a été dessiné Nul 5 Félicitations pour votre succès Exemple D Dessiner un joker J'ai dessiné un joker Vous perdez le jeu se termine Exemple E: Si vous ne pouvez pas fermer en 5 fois Vous perdez le jeu se termine

<détails>

Exemple de réponse </ summary>

Q1

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Sano
{
    class Program
    {
        static void Main(string[] args)
        {
            
            Console.Write("Quel est votre poids actuel?");
            int now = int.Parse(Console.ReadLine());
            Console.Write("Quel est votre poids cible?");
            int goal = int.Parse(Console.ReadLine());
            Human h1 = new Human(now,goal,now);
            while (true)
            {
                Console.Write("Combien de kilomètres parcourez-vous aujourd'hui pour atteindre votre objectif? 1 ... 10km, 2 ... 20km, 3 ... 30km, 4 ... informations actuelles, 5 ... fin>");
                var select = int.Parse(Console.ReadLine());
                
                switch (select)
                {
                    case 1:
                       h1.Run10();
                       
                        break;
                    case 2:
                        h1.Run20();
                        
                        break;
                    case 3:

                        h1.Run30();
                        break;
                    case 4:
                        h1.ShowInfo();
                        break;
                    case 5:
                        h1.End();
                        return;
                }
                if (h1.GoalWeight >= h1.NowWeight)
                {
                    Console.WriteLine("Atteinte de l'objectif Félicitation!");
                    break;
                }
            
                
            }
        }
    }
}

Human.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Sano
{
    class Human
    {
        public int NowWeight { get; set; }
        public int GoalWeight { get; set; }
        public int Weight { get; set; }
        public Human(int weight, int weight2, int weight3)
        {
            this.NowWeight = weight;
            this.GoalWeight = weight2;
            this.Weight = weight3;
        }
   
        public void Run10()
        {
            NowWeight--;
            if (GoalWeight < NowWeight)
            {
                Console.WriteLine("J'ai perdu 1kg! Faisons de notre mieux dans cette condition!");
            }
            
        }
        public void Run20()
        {
            NowWeight -= 5;
            if (GoalWeight < NowWeight)
            {


                Console.WriteLine("J'ai perdu 5 kg! Faisons de notre mieux dans cette condition!");
            }
            
        }
        public void Run30()
        {
            NowWeight -= 10;
            if (GoalWeight < NowWeight)
            {
                Console.WriteLine("J'ai perdu 10 kg! Faisons de notre mieux dans cette condition!");
            }
        }
        public void ShowInfo()
        {
            Console.WriteLine($"{Weight - NowWeight}kg je suis mince! restant{(NowWeight - GoalWeight)}kg! faisons de notre mieux!");
        }
        public void End()
        {
            Console.WriteLine("Quittez l'application");
        }
    }
}

Q2

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Nagasawa {
    class Program {
        const int MAX_TURN = 5;
        static void Main(string[] args) {
            Deck d1 = new Deck();
            Deck d2 = new Deck();
            for(int i = 0; i < MAX_TURN; i++) {
                string c1 = d1.Draw();
                string c2 = d2.Draw();
                
                if (c1 == c2) {
                    Console.WriteLine("Félicitations pour votre succès");
                    return;
                }else if(c1=="Joker" && c2 == "Joker") {
                    Console.WriteLine("Vous perdez le jeu se termine");
                    return;
                }
                else if(c1=="Joker" || c2 == "Joker") {
                    Console.WriteLine("Le nombre de fois que je peux dessiner a augmenté de un");
                    i--;
                } else {
                    Console.WriteLine("Pardon");
                }
                Console.ReadLine();
            }
            Console.WriteLine("Vous perdez le jeu se termine");
        }
    }
    public class Deck {
        public List<string> Cards { get; set; }
        public Deck() {
            CreateDeck();
        }
        public void CreateDeck() {
            var temp = new List<string>();
            for (int i = 0; i < 54; i++) {
                if (i < 52) {
                    temp.Add( i % 13 + 1 + "");
                } else {
                    temp.Add( "Joker");
                }
            }
            Cards = temp.OrderBy(i => Guid.NewGuid()).ToList();
        }
        public string Draw() {
            var card = Cards[0];
            Console.WriteLine(card + "Fut dessiné");
            Cards.RemoveAt(0);
            return card;
        }
    }
}

Je dois améliorer mes connaissances

Recommended Posts

C # (base de l'encapsulation)
J'ai essayé de mâcher C # (indexeur)
C # (polymorphisme: polymorphisme)
J'ai essayé de mâcher C # (lire et écrire des fichiers)
J'ai brièvement résumé la grammaire de base de Ruby
J'ai essayé de faire une authentification de base avec Java
05. J'ai essayé de supprimer la source de Spring Boot
J'ai essayé de réduire la capacité de Spring Boot
J'ai essayé de vérifier yum-cron
J'ai essayé de résumer les bases de kotlin et java
J'ai essayé de vérifier ceci et celui de Spring @ Transactional
L'idée de C # (expression lambda, pour phrase) à mâcher
J'ai essayé de créer un environnement de WSL2 + Docker + VSCode
J'ai essayé de toucher JavaScript Part.1 Système de code de traitement de base
J'ai créé un client RESAS-API en Java
J'ai essayé de résumer le support d'iOS 14
J'ai essayé d'interagir avec Java
J'ai essayé d'expliquer la méthode
J'ai essayé de résumer l'apprentissage Java (1)
J'ai essayé de résumer Java 8 maintenant
J'ai essayé d'expliquer Active Hash
J'ai essayé d'utiliser Google HttpClient de Java
J'ai essayé de résoudre le problème de la "sélection multi-étapes" avec Ruby
J'ai essayé d'implémenter le traitement Ajax de la fonction similaire dans Rails
J'ai essayé de créer un environnement de serveur UML Plant avec Docker
J'ai essayé d'approfondir ma compréhension de l'orientation des objets de n%
J'ai essayé de vérifier le fonctionnement du serveur gRPC avec grpcurl
J'ai essayé de résumer les méthodes de Java String et StringBuilder
J'ai essayé de générer une source de programme en langage C à partir de cURL
J'ai essayé de résoudre le problème de Google Tech Dev Guide
J'ai créé une application d'apprentissage automatique avec Dash (+ Docker) part2 ~ Façon basique d'écrire Dash ~
J'ai essayé de résumer les méthodes utilisées
J'ai essayé de résumer les expressions Java lambda
J'ai essayé de démarrer avec Web Assembly
J'ai essayé de résumer les points clés de la conception et du développement de gRPC
J'ai essayé de résoudre la recherche binaire d'AOJ
J'ai essayé d'implémenter le modèle Iterator
J'ai essayé de résumer l'API Stream
J'ai essayé d'utiliser pleinement le cœur du processeur avec Ruby
J'ai essayé de visualiser l'accès de Lambda → Athena avec AWS X-Ray
J'ai essayé de construire AdoptOpenjdk 11 sur CentOS 7
Qu'est-ce que Docker? J'ai essayé de résumer
J'ai essayé d'utiliser Selenium comme JQuery
J'ai essayé de toucher JavaScript Part.2 orienté objet
J'ai essayé de mesurer et de comparer la vitesse de Graal VM avec JMH
J'ai essayé de faire divers programmes de nombre d'amitié, nombre parfait, nombre excessif, nombre de pénurie, nombre de fois
J'ai essayé d'implémenter une fonction équivalente à Felica Lite avec HCE-F d'Android
Ce que j'ai essayé quand je voulais obtenir tous les champs d'un haricot
J'ai essayé de comparer la technologie d'infrastructure des ingénieurs ces jours-ci avec la cuisine.
J'ai essayé de cloner une application Web pleine de bugs avec Spring Boot
J'ai essayé de résumer sur JVM / garbage collection
J'ai essayé de vérifier AdoptOpenJDK 11 (11.0.2) avec l'image Docker