[JAVA] C # (Grund der Kapselung)

Java-basierte Ausgabe über die grundlegende Kapselung von C # in der Vergangenheit

Unterschiede zwischen Zugriffsmodifikatoren öffentlich und praivate (Es gibt andere, aber diese beiden werden Anfängern empfohlen) Es hängt davon ab, ob Sie es "zugänglich" oder "unzugänglich" machen möchten.

Machen Sie nur die Funktionen sichtbar, die Sie verwenden möchten

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 ist" + player.Hp);
        }
    }
}

Player.cs


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

namespace SampleRPG
{
    class Player
    {
        //Deklarieren Sie eine private Mitgliedsvariable
        private string name;
        private int hp;

        //Im Folgenden definieren wir öffentliche Konstruktoren und Member-Methoden
        public Player(string name, int hp)
        {
            this.name = name;
            this.hp = hp;
        }

      
        public int Hp
        {
            set //Verarbeitete Artikel einstellen
            {
                this.hp = value;
                if (this.hp < 0)
                {
                    this.hp = 0;
                }
            }
            get
            {
                return this.hp; //Holen Sie sich aktuelle PS
            }
        }
        public String Name
        {
            set //Verarbeitete Artikel einstellen
            {
                this.name = value;
                if (value.Length < 8)
                {
                    this.name = value;
                }
            }
            get
            {
                return this.name; //Aktuellen Namen abrufen
            }
        }
        /*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 + "Angegriffen");
        }

        public void Defense()
        {
            Console.WriteLine(this.name + "Verteidigt");
        }
    }
}

Ergänzung 1

Obwohl es einfach ist, ist es dasselbe wie Java, und der aktuelle Wert wird vom Getter erfasst (get) und vom Setter (set) zur Verarbeitung erfasst.

Im Gegensatz zu "JAVA" verfügt "C #" über einen Mechanismus namens "Eigenschaften". Getter und Setter können vereinfacht werden.

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

Ergänzung 2

statisches Schlüsselwort

Statische Elemente sind Werte, die zu Klassensituationen gehören und nach dem Anhängen nicht mehr referenziert werden können.

Ergänzung 3

Rufen Sie den Konstruktor Ihrer Klasse auf

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

Anwendungsproblem

Q Erstellen Sie eine Monkey-Klasse und implementieren Sie die folgende Verarbeitung aus der MonkeyApp-Klasse. (Alle Zugänglichkeit kann öffentlich sein) [Ausführungsbeispiel] Entscheide dich für einen merkwürdigen Namen:> Toshi Entscheide dich für das Alter der Neugierigen:> 3 Was soll Curious tun? 1 ... Gruß, 2 ... Takema, 3 ... Aufstehen, 4 ... Ende> 1 Hallo, ich heiße Toshi (3 Jahre alt). Freut mich, dich kennenzulernen! Was soll Curious tun? 1 ... Begrüßung, 2 ... Takema, 3 ... verkehrt herum, 4 ... Ende> 2 Toshi stieg gut auf das Bambuspferd! Was soll Curious tun? 1 ... Begrüßung, 2 ... Takema, 3 ... verkehrt herum, 4 ... Ende> 3 Toshi hat sich auf den Kopf gestellt! Was soll Curious tun? 1 ... Begrüßung, 2 ... Takema, 3 ... verkehrt herum, 4 ... Ende> 4 Beenden Sie die Anwendung.

Erstelle eine Affen-APP

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("Hallo+" + this.name + "(" + this.name + ")ist. Freut mich, dich kennenzulernen!");
        }
        public void Take()
        {
            Console.WriteLine(this.name + "Geschickt auf Takeuma!");
        }

        public void Defense()
        {
            Console.WriteLine(this.name + "Ich stand zufällig auf dem Kopf!");
        }
       
        public void Lust()
        {
            Console.WriteLine("Beenden Sie die Anwendung.");
        }
    }
}

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("Bitte entscheiden Sie den Namen des Neugierigen> ");
            monkey1.name = Console.ReadLine();
            Console.Write("Wie heißen Sie?: ");
            monkey1.age = int.Parse(Console.ReadLine());

            Console.Write("Was soll Aosaru tun? 1 ... Begrüßung, 2 ... Takema, 3 ... verkehrt herum, 4 ... Ende>");
            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;
            }
        }
    }
}

Verstopfter Platz

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

//Program.cs
public Monkey(){}

Ich hätte das viele Male in "Java Beans" sehen und beschreiben sollen ...

Übung 1 (Es ist schwierig, an eine Person in der Vergangenheit zu denken, ohne an eine Verzweigung zu denken, ohne an die Person zu denken, die sie löst.)

Q1 Erstellen Sie eine Human-Klasse und realisieren Sie die folgende Verarbeitung aus der HumanApp-Klasse. (Alle Zugänglichkeit kann öffentlich sein)

[Ausführungsbeispiel 1] was ist dein momentanes Gewicht? :> 70 Was ist Ihr Zielgewicht? :> 50 Wie viele Kilometer laufen Sie heute, um Ihr Ziel zu erreichen? 1… 10 km, 2… 20 km, 3… 30 km, 4… aktuelle Informationen, 5… Ende> 1 Ich habe 1 kg verloren! Lassen Sie uns in diesem Zustand unser Bestes geben! Wie viele Kilometer laufen Sie heute, um Ihr Ziel zu erreichen? 1… 10 km, 2… 20 km, 3… 30 km, 4… aktuelle Informationen, 5… Ende> 2 Ich habe 5 kg verloren! Lassen Sie uns in diesem Zustand unser Bestes geben! Wie viele Kilometer laufen Sie heute, um Ihr Ziel zu erreichen? 1… 10 km, 2… 20 km, 3… 30 km, 4… aktuelle Informationen, 5… Ende> 3 Ich habe 10 kg verloren! Lassen Sie uns in diesem Zustand unser Bestes geben! Wie viele Kilometer laufen Sie heute, um Ihr Ziel zu erreichen? 1… 10 km, 2… 20 km, 3… 30 km, 4… aktuelle Informationen, 5… Ende> 4 Ich bin 16 kg dünn! 4kg übrig! geben wir unser Bestes! Wie viele Kilometer laufen Sie heute, um Ihr Ziel zu erreichen? 1… 10 km, 2… 20 km, 3… 30 km, 4… aktuelle Informationen, 5… Ende> 3 Das Ziel erreicht! Glückwunsch! [Ausführungsbeispiel 2] Wie viele Kilometer laufen Sie heute, um Ihr Ziel zu erreichen? 1… 10 km, 2… 20 km, 3… 30 km, 4… aktuelle Informationen, 5… Ende> 5 Beenden Sie die Anwendung.

Übung 2

Bereiten Sie zwei Kartensätze (insgesamt 54) mit Zahlen von 1 bis 13 und zwei Joker vor. Realisieren Sie den Vorgang des Herausziehens, wenn zwei Spielkartensätze zufällig gezogen werden und für beide dieselbe Zahl gezogen wird. "Bedingungen" 1 Sie können bis zu 5 Mal zeichnen 2 Wenn einer der beiden den Joker zieht, erhöht sich die Zahl, die gezogen werden kann, um 1. 3 Wenn Sie alle Joker ziehen, verlieren Sie und das Spiel endet dort. Die Anzahl der gezogenen Karten nimmt jedoch ab. Beispiel A 3 wurde gezeichnet Zeichne 4 Es tut uns leid

Beispiel B 1 wurde gezeichnet Ich habe einen Joker gezeichnet Die Häufigkeit, mit der ich zeichnen kann, hat sich um eins erhöht

Beispiel C 5 wurde gezeichnet Zeichne 5 Glückwunsch zu deinem Erfolg Beispiel D Zeichnen Sie einen Joker Ich habe einen Joker gezeichnet Sie verlieren das Spiel endet Beispiel E: Wenn Sie nicht fünfmal schließen können Sie verlieren das Spiel endet

Beispielantwort

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("was ist dein momentanes Gewicht?");
            int now = int.Parse(Console.ReadLine());
            Console.Write("Was ist Ihr Zielgewicht?");
            int goal = int.Parse(Console.ReadLine());
            Human h1 = new Human(now,goal,now);
            while (true)
            {
                Console.Write("Wie viele Kilometer laufen Sie heute, um Ihr Ziel zu erreichen? 1 ... 10 km, 2 ... 20 km, 3 ... 30 km, 4 ... aktuelle Informationen, 5 ... Ende>");
                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("Zielerreichung Glückwunsch!");
                    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("Ich habe 1 kg verloren! Lassen Sie uns in diesem Zustand unser Bestes geben!");
            }
            
        }
        public void Run20()
        {
            NowWeight -= 5;
            if (GoalWeight < NowWeight)
            {


                Console.WriteLine("Ich habe 5 kg verloren! Lassen Sie uns in diesem Zustand unser Bestes geben!");
            }
            
        }
        public void Run30()
        {
            NowWeight -= 10;
            if (GoalWeight < NowWeight)
            {
                Console.WriteLine("Ich habe 10 kg verloren! Lassen Sie uns in diesem Zustand unser Bestes geben!");
            }
        }
        public void ShowInfo()
        {
            Console.WriteLine($"{Weight - NowWeight}kg Ich bin dünn! verbleibend{(NowWeight - GoalWeight)}Es ist kg! geben wir unser Bestes!");
        }
        public void End()
        {
            Console.WriteLine("Beenden Sie die Anwendung");
        }
    }
}

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("Glückwunsch zu deinem Erfolg");
                    return;
                }else if(c1=="Joker" && c2 == "Joker") {
                    Console.WriteLine("Sie verlieren das Spiel endet");
                    return;
                }
                else if(c1=="Joker" || c2 == "Joker") {
                    Console.WriteLine("Die Häufigkeit, mit der ich zeichnen kann, hat sich um eins erhöht");
                    i--;
                } else {
                    Console.WriteLine("Es tut uns leid");
                }
                Console.ReadLine();
            }
            Console.WriteLine("Sie verlieren das Spiel endet");
        }
    }
    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 + "Wurde gezogen");
            Cards.RemoveAt(0);
            return card;
        }
    }
}

Ich muss mein Wissen verbessern

Recommended Posts

C # (Grund der Kapselung)
Ich habe versucht, C # (Indexer) zu kauen.
C # (Polymorphismus: Polymorphismus)
Ich habe versucht, C # zu kauen (Dateien lesen und schreiben)
Ich habe die grundlegende Grammatik von Ruby kurz zusammengefasst
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
05. Ich habe versucht, die Quelle von Spring Boot zu löschen
Ich habe versucht, die Kapazität von Spring Boot zu reduzieren
Ich habe versucht, yum-cron zu verifizieren
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Ich habe versucht, dies und das von Spring @ Transactional zu überprüfen
Die Idee von C # (Lambda-Ausdruck, für Satz) zu kauen
Ich habe versucht, eine Umgebung mit WSL2 + Docker + VSCode zu erstellen
Ich habe versucht, JavaScript Part.1 Basic Processing Code System zu berühren
Ich habe einen RESAS-API-Client in Java erstellt
Ich habe versucht, die Unterstützung für iOS 14 zusammenzufassen
Ich habe versucht, mit Java zu interagieren
Ich habe versucht, die Methode zu erklären
Ich habe versucht, das Java-Lernen zusammenzufassen (1)
Ich habe jetzt versucht, Java 8 zusammenzufassen
Ich habe versucht, Active Hash zu erklären
Ich habe versucht, Google HttpClient von Java zu verwenden
Ich habe versucht, das Problem der "mehrstufigen Auswahl" mit Ruby zu lösen
Ich habe versucht, die Ajax-Verarbeitung der ähnlichen Funktion in Rails zu implementieren
Ich habe versucht, mit Docker eine Plant UML Server-Umgebung zu erstellen
Ich habe versucht, mein Verständnis der Objektorientierung um n% zu vertiefen
Ich habe versucht, den Betrieb des gRPC-Servers mit grpcurl zu überprüfen
Ich habe versucht, die Methoden von Java String und StringBuilder zusammenzufassen
Ich habe versucht, eine C-Sprachprogrammquelle aus cURL zu generieren
Ich habe versucht, das Problem des Google Tech Dev Guide zu lösen
Ich habe eine App für maschinelles Lernen mit Dash (+ Docker) Teil 2 ~ Grundlegende Schreibweise für Dash ~ erstellt
Ich habe versucht, die verwendeten Methoden zusammenzufassen
Ich habe versucht, Java-Lambda-Ausdrücke zusammenzufassen
Ich habe versucht, mit Web Assembly zu beginnen
Ich habe versucht, die wichtigsten Punkte des gRPC-Designs und der Entwicklung zusammenzufassen
Ich habe versucht, AOJs binäre Suche zu lösen
Ich habe versucht, das Iterator-Muster zu implementieren
Ich habe versucht, die Stream-API zusammenzufassen
Ich habe versucht, den CPU-Kern mit Ruby voll auszunutzen
Ich habe versucht, den Zugriff von Lambda → Athena mit AWS X-Ray zu visualisieren
Ich habe versucht, AdoptOpenjdk 11 unter CentOS 7 zu erstellen
Was ist Docker? Ich habe versucht zusammenzufassen
Ich habe versucht, Selen wie JQuery zu verwenden
Ich habe versucht, JavaScript Part.2 Objektorientiert zu berühren
Ich habe versucht, die Geschwindigkeit von Graal VM mit JMH zu messen und zu vergleichen
Ich habe versucht, verschiedene Programme wie Freundschaftsnummer, perfekte Nummer, überschüssige Nummer, Mangelzahl, Anzahl der Male zu machen
Ich habe versucht, mit HCE-F von Android eine Funktion zu implementieren, die Felica Lite entspricht
Was ich versucht habe, als ich alle Felder einer Bohne bekommen wollte
Ich habe versucht, die Infrastrukturtechnologie der Ingenieure heutzutage mit dem Kochen zu vergleichen.
Ich habe versucht, eine Webanwendung voller Fehler mit Spring Boot zu klonen
Ich habe versucht, über JVM / Garbage Collection zusammenzufassen
Ich habe versucht, AdoptOpenJDK 11 (11.0.2) mit dem Docker-Image zu überprüfen