From f7617cdfec4a63a33658bc13f57555f788ddf6c7 Mon Sep 17 00:00:00 2001 From: MYP Date: Tue, 8 Sep 2020 09:47:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E5=86=85=E5=AE=B9=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../03 C#面向对象设计 I.md | 870 ++++++++++++++++++ .../{03 数组.md => 04 数组.md} | 0 ...{04 顺序表和链表.md => 06 顺序表和链表.md} | 0 .../{06 栈与递归.md => 07 栈与递归.md} | 0 .../{07 字符串.md => 08 字符串.md} | 0 5 files changed, 870 insertions(+) create mode 100644 DataStructureAndAlgorithm/03 C#面向对象设计 I.md rename DataStructureAndAlgorithm/{03 数组.md => 04 数组.md} (100%) rename DataStructureAndAlgorithm/{04 顺序表和链表.md => 06 顺序表和链表.md} (100%) rename DataStructureAndAlgorithm/{06 栈与递归.md => 07 栈与递归.md} (100%) rename DataStructureAndAlgorithm/{07 字符串.md => 08 字符串.md} (100%) diff --git a/DataStructureAndAlgorithm/03 C#面向对象设计 I.md b/DataStructureAndAlgorithm/03 C#面向对象设计 I.md new file mode 100644 index 0000000..5be955f --- /dev/null +++ b/DataStructureAndAlgorithm/03 C#面向对象设计 I.md @@ -0,0 +1,870 @@ +# 03 C# I + + +**֪ʶṹ** + +![ͼ1 ֪ʶṹ](https://img-blog.csdnimg.cn/20200908093951579.png) + +--- +## 1 +- ࣺø߼ʵֵһADT +- ͨı + +--- +## 2װ + +**2.1 ʲôǷװ** + +ڲԷֹⲿڲʵֹ̡ + +**2.2 װ** + +- ͨη`private``protected``public``internal`ʵ֡ +- еݣDataͲOperationη + - `private`ֻڲʣĬϣ + - `protected`ֻڲʡ + - `public`ڲⲿԷʡ + - `internal`ͬһڲʣ൱`public` +- η + - `public`ʹá + - `internal`ͬһڲʹãĬϣ + +ע`internal`ε࣬ԣֻҪͬһе඼Էʣ߲ͬһռ䣬ֻҪʹ`using`Ӧռ伴ɣһҲӿռ䲢ǽ綨ʼģDZ֤ȫֵΨһԵġ + +οͼģ +- [ͼģC#internal޶η](https://mp.weixin.qq.com/s?__biz=MzIyNDA1NjA1NQ==&mid=2651012035&idx=1&sn=442e2b1e601082b6553ffa06e52c0ae4&chksm=f3e35c5bc494d54d43d9b78947f8e9995208e6404dcd1c92625f780338924261936d227f132d&token=1238973891&lang=zh_CN#rd) + +**2.3 ʾ** + +- ͼClass Diagram + - -`private` + - +`public` + - #`protected` + +![ͼ2 Class Diagram](https://img-blog.csdnimg.cn/2020090718494457.png) + +1ͼʵAnimal͡ + + +![ͼ3 Class Diagram](https://img-blog.csdnimg.cn/20200907185820336.png) + +```c +public class Animal +{ + public int Age; + public double Weight; + public void Eat() + { + Console.WriteLine("Animal Eat."); + } + public void Sleep() + { + Console.WriteLine("Animal Sleep."); + } +} + +class Program +{ + static void Main(string[] args) + { + Animal al = new Animal(); + al.Eat();// Animal Eat. + al.Sleep();// Animal Sleep. + } +} +``` + +--- +## 3̳ + +**3.1 ʲôǼ̳** + +ӵиijЩDataOperationĹ̡ + +**3.2 ̳** + + +```c +public class Child : Parent +{ + // +} +```` +- `Child`ࣩࣨ`Parent`ࣩࣨ +- Уá:ʾ̳С + +C# ֵֻ֧̳УԶһ̳еࡣ +``` +public sealed class Name +{ + //... +} +``` +- `sealed`ؼֿɷֹ౻̳С + + +븸ļ̳йϵ +- `public` `protected` `private` `internal` +- `public` `protected` ޷̳ `internal` + +**3.3 ʸԱ** + +`base`ؼ֡ + +2ʸҸ๹캯 + +```c +public class Parent +{ + private int _data1; // ֻܱڲ + protected int Data2; // ܱʺͼ̳ + public int Data3; // ܱʺͼ̳ +} + +public class Child : Parent +{ + public Child() + { + base.Data2 = 2; + base.Data3 = 3; + } +} + +class Program +{ + static void Main(string[] args) + { + Child cld = new Child(); + Console.WriteLine(cld.Data3); // 3 + } +} +``` + +3ʸҸ๹캯 + +```c +public class Parent +{ + private int _data1; // ֻܱڲ + protected int Data2; // ܱʺͼ̳ + public int Data3; // ܱʺͼ̳ + public Parent(int dt1, int dt2, int dt3) + { + _data1 = dt1; + Data2 = dt2; + Data3 = dt3; + } +} + +public class Child : Parent +{ + public Child() : base(0, 2, 3) + { + ; + } +} + +class Program +{ + static void Main(string[] args) + { + Child cld = new Child(); + Console.WriteLine(cld.Data3);// 3 + } +} +``` + +**3.4 ʾ** + +- ͨͼʾ + + +![ͼ4 ̳йϵ](https://img-blog.csdnimg.cn/2020090718590952.png) + +4ͼʵֳ룬ע֮ļ̳йϵ + + +![ͼ5 Class Diagram](https://img-blog.csdnimg.cn/20200907185946630.png) + +```c +public class Animal +{ + public int Age; + public double Weight; + public void Eat() + { + Console.WriteLine("Animal Eat."); + } + public void Sleep() + { + Console.WriteLine("Animal Sleep."); + } +} + +public class Bird : Animal +{ + public void Fly() + { + Console.WriteLine("Bird Fly."); + } +} + +public class Dog : Animal +{ + public void Run() + { + Console.WriteLine("Dog Run."); + } +} + +public class Fish : Animal +{ + public void Swim() + { + Console.WriteLine("Fish Swim."); + } +} + +class Program +{ + static void Main(string[] args) + { + Dog dog = new Dog(); + dog.Run(); //Dog Run. + Bird bird = new Bird(); + bird.Fly(); //Bird Fly. + Fish fish = new Fish(); + fish.Swim(); //Fish Swim. + } +} +``` + +**3.5 ʵ** + +Ϊ洢ռĹ̡ + +5ʵ + +```c +public class Animal +{ + public int Age; + public double Weight; + public void Eat() + { + Console.WriteLine("Animal Eat."); + } + public void Sleep() + { + Console.WriteLine("Animal Sleep."); + } +} + +public class Dog : Animal +{ + public void Run() + { + Console.WriteLine("Dog Run."); + } +} + +class Program +{ + static void Main(string[] args) + { + Animal al = new Animal(); // ʵAnimal + al.Eat(); // Animal Eat. + al.Sleep(); // Animal Sleep. + + Dog dg = new Dog(); // ʵDog + dg.Age = 2; + dg.Weight = 4.5; + Console.WriteLine("Dog Infor: Age:{0},Weight:{1}", + dg.Age, dg.Weight); + // Dog Infor: Age:2, Weight:4.5 + dg.Sleep(); // Animal Sleep. + dg.Eat(); // Animal Eat. + dg.Run(); // Dog Run. + } +} +``` + +6븸 + +![ͼ6 Class Diagram](https://img-blog.csdnimg.cn/20200907190525103.png) + +```c +public class Animal +{ + public int Age; + public double Weight; + + public void Eat() + { + Console.WriteLine("Animal Eat."); + } + + public void Sleep() + { + Console.WriteLine("Animal Sleep."); + } +} + +public class Dog : Animal +{ + public void Eat() + { + Console.WriteLine("Dog Eat."); + } + + public void Sleep() + { + Console.WriteLine("Dog Sleep."); + } + + public void Run() + { + Console.WriteLine("Dog Run."); + } +} +class Program +{ + static void Main(string[] args) + { + Animal al = new Dog(); // ʵ + al.Eat(); // Animal Eat.⣩ + al.Sleep(); // Animal Sleep. + + Dog dg = al as Dog; //ǿתDog dg = (Dog)al; + dg.Eat(); // Dog Eat. + dg.Sleep(); // Dog Sleep. + dg.Run(); // Dog Run. + } +} +``` + +ע⣺ + +- `Animal al = new Dog();`ȷ +- `Dog dg = new Animal();` + +ʵ࣬಻ʵ࣬`Dog`һ`Animal``Animal`һ`Dog` + +- `Animal al = new Dog();` +- `Dog dg = al;`Ҫǿת +- `Dog dg = al as Dog;` ȷ`al``Dog`ͣnull +- `Dog dg = (Dog)al;` ȷ`al``Dog`ͣϵͳ׳쳣 + + + + +--- +## 4̬ + +**4.1 ʲôǶ̬** + +ͬIJOperationڲͬĶ󣬿вͬĽִͣͬн + +**4.2 ̬ķ** +- ʱ̬ʱִĸĸoverrideд +- ʱ̬ڱʱִеĸoverloadأ + +**4.3 ̬ʵ** + +ʱ̬ + +- ڸж岢ʵ鷽virtual +- идoverride鷽 +- 鷽з +- д鷽Ҫ󷽷βΣֵͱͬ + +7ʵʱ̬Ĵ + +![ͼ7 Class Diagram](https://img-blog.csdnimg.cn/20200907192621578.png) + +```c +public class Animal +{ + public int Age; + public double Weight; + + public virtual void Eat() + { + Console.WriteLine("Animal Eat."); + } + + public virtual void Sleep() + { + Console.WriteLine("Animal Sleep."); + } +} + +public class Dog : Animal +{ + public override void Eat() + { + Console.WriteLine("Dog Eat."); + } + + public override void Sleep() + { + Console.WriteLine("Dog Sleep."); + } + + public virtual void Run() + { + Console.WriteLine("Dog Run."); + } +} + +class Program +{ + static void Main(string[] args) + { + Animal al = new Dog(); + //ִʱͨжalִĸеĸ; + al.Eat(); // Dog Eat. + al.Sleep(); // Dog Sleep. + } +} +``` + +ʱ̬ + +- жķвͬİ汾 +- أ`operator`ؼ +- public static operator (βб){ } +- أͬķвͬIJбͬķֵ + +8ͨͼʵֱʱ̬Ĵ + +![ͼ8 Class Diagram](https://img-blog.csdnimg.cn/2020090808531193.png) + +```c +public class Complex +{ + public int A; + public int B; + + public Complex(int a, int b) + { + this.A = a; //thisʾڴComplex + this.B = b; + } + + public static Complex operator +(Complex c1, Complex c2) + { + return new Complex(c1.A + c2.A, c1.B + c2.B); + } + + public override string ToString() + { + return string.Format("{0}+{1}i", A, B); + } +} + +public class Math +{ + public int Add(int x, int y) + { + return x + y; + } + + public double Add(double x, double y) + { + return x + y; + } + + public Complex Add(Complex x, Complex y) + { + return x + y; + } +} + +class Program +{ + static void Main(string[] args) + { + Complex c1 = new Complex(1, 2); + Complex c2 = new Complex(3, 4); + Complex c3 = c1 + c2; + Console.WriteLine("C1={0}", c1); // C1=1+2i + Console.WriteLine("C2={0}", c2); // C2=3+4i + Console.WriteLine("C3={0}", c3); // C3=4+6i + Math mth = new Math(); + Complex c4 = mth.Add(c2, c3); + //ڱʱݲбִĸеĸ; + Console.WriteLine("C4={0}", c4); // C4=7+10i + } +} +``` + +ܽ᣺`override``overload` + + +![](https://img-blog.csdnimg.cn/2020090809435588.png) + + + +**4.4 󷽷** + +- 󷽷Կûʵ鷽`abstract`ֻзҪид`override`÷ +- ࣺг󷽷ࡣ಻ֱʵ + +9ͼʵִ + +![ͼ9 Class Diagram](https://img-blog.csdnimg.cn/2020090809021457.png) + +```c +public abstract class Animal +{ + public int Age; + public double Weight; + public abstract void Eat(); + public abstract void Sleep(); +} + +public class Dog : Animal +{ + public override void Eat() + { + Console.WriteLine("Dog Eat."); + } + public override void Sleep() + { + Console.WriteLine("Dog Sleep."); + } + public void Run() + { + Console.WriteLine("Dog Run."); + } +} + +class Program +{ + static void Main(string[] args) + { + Animal al = new Dog(); + al.Eat(); // Dog Eat. + al.Sleep(); // Dog Sleep. + ((Dog)al).Run(); // Dog Run. + } +} +``` + +ע⣺ +- `al.Run();` +- `((Dog)al).Run();`ȷ + +вûRunʹҪǿת + +- `Animal al = new Animal ();` + +಻ֱʵϵͳ׳쳣 + +ܽ᣺󷽷鷽![](https://img-blog.csdnimg.cn/20200908094431953.png) + + +10ϵͳ + +ijԱRaiserĿǰ״̬ҪֶDogBird㣨FishֶֻҪ˯SleepͳԷEatɡ + +ƸϵͳҪƵġԭ򡱡 + +һ + +![ͼ10 Class Diagram](https://img-blog.csdnimg.cn/20200908091105732.png) + +```c++ +public class Bird +{ + public void Eat() + { + Console.WriteLine("Bird Eat."); + } + public void Sleep() + { + Console.WriteLine("Bird Sleep."); + } + public void Fly() + { + Console.WriteLine("Bird Fly."); + } +} + +public class Dog +{ + public void Eat() + { + Console.WriteLine("Dog Eat."); + } + public void Sleep() + { + Console.WriteLine("Dog Sleep."); + } + public void Run() + { + Console.WriteLine("Dog Run."); + } +} + +public class Fish +{ + public void Eat() + { + Console.WriteLine("Fish Eat."); + } + public void Sleep() + { + Console.WriteLine("Fish Sleep."); + } + public void Swim() + { + Console.WriteLine("Fish Swim."); + } +} + +public class Raiser +{ + public void RaiseDog() + { + Dog dog = new Dog(); + dog.Eat(); + dog.Sleep(); + } + public void RaisBird() + { + Bird bird = new Bird(); + bird.Eat(); + bird.Sleep(); + } + public void RaisFish() + { + Fish fish = new Fish(); + fish.Eat(); + fish.Sleep(); + } +} + +class Program +{ + static void Main(string[] args) + { + Raiser rar = new Raiser(); + rar.RaiseDog(); + // Dog Eat. + // Dog Sleep. + rar.RaisBird(); + // Bird Eat. + // Bird Sleep. + rar.RaisFish(); + // Fish Eat. + // Fish Sleep. + } +} +``` + + + +![ͼ11 Class Diagram](https://img-blog.csdnimg.cn/20200908092632785.png) + +```c +public class Bird +{ + public void Eat() + { + Console.WriteLine("Bird Eat."); + } + + public void Sleep() + { + Console.WriteLine("Bird Sleep."); + } + + public void Fly() + { + Console.WriteLine("Bird Fly."); + } +} + +public class Dog +{ + public void Eat() + { + Console.WriteLine("Dog Eat."); + } + + public void Sleep() + { + Console.WriteLine("Dog Sleep."); + } + + public void Run() + { + Console.WriteLine("Dog Run."); + } +} + +public class Fish +{ + public void Eat() + { + Console.WriteLine("Fish Eat."); + } + + public void Sleep() + { + Console.WriteLine("Fish Sleep."); + } + + public void Swim() + { + Console.WriteLine("Fish Swim."); + } +} + +public enum AnimalType +{ + Dog, + Bird, + Fish +}; + +public class Raiser +{ + public void Raise(AnimalType alt) + { + switch (alt) + { + case AnimalType.Bird: + Bird bird = new Bird(); + bird.Eat(); + bird.Sleep(); + break; + case AnimalType.Dog: + Dog dog = new Dog(); + dog.Eat(); + dog.Sleep(); + break; + case AnimalType.Fish: + Fish fish = new Fish(); + fish.Eat(); + fish.Sleep(); + break; + } + } +} + +class Program +{ + static void Main(string[] args) + { + Raiser rar = new Raiser(); + rar.Raise(AnimalType.Dog); + // Dog Eat. + // Dog Sleep. + rar.Raise(AnimalType.Bird); + // Bird Eat. + // Bird Sleep. + rar.Raise(AnimalType.Fish); + // Fish Eat. + // Fish Sleep. + } +} +``` + + + +![ͼ12 Class Diagram](https://img-blog.csdnimg.cn/20200908093122441.png) + +```c +public abstract class Animal +{ + public int Age; + public double Weight; + public abstract void Eat(); + public abstract void Sleep(); +} + +public class Bird : Animal +{ + public override void Eat() + { + Console.WriteLine("Bird Eat."); + } + + public override void Sleep() + { + Console.WriteLine("Bird Sleep."); + } + + public void Fly() + { + Console.WriteLine("Bird Fly."); + } +} + +public class Dog : Animal +{ + public override void Eat() + { + Console.WriteLine("Dog Eat."); + } + + public override void Sleep() + { + Console.WriteLine("Dog Sleep."); + } + + public void Run() + { + Console.WriteLine("Dog Run."); + } +} + +public class Fish : Animal +{ + public override void Eat() + { + Console.WriteLine("Fish Eat."); + } + + public override void Sleep() + { + Console.WriteLine("Fish Sleep."); + } + + public void Swim() + { + Console.WriteLine("Fish Swim."); + } +} + +public class Raiser +{ + public void Raise(Animal al) + { + al.Eat(); + al.Sleep(); + } +} + + +class Program +{ + static void Main(string[] args) + { + Raiser rsr = new Raiser(); + rsr.Raise(new Dog()); + // Dog Eat. + // Dog Sleep. + rsr.Raise(new Bird()); + // Bird Eat. + // Bird Sleep. + rsr.Raise(new Fish()); + // Fish Eat. + // Fish Sleep. + } +} +``` + diff --git a/DataStructureAndAlgorithm/03 数组.md b/DataStructureAndAlgorithm/04 数组.md similarity index 100% rename from DataStructureAndAlgorithm/03 数组.md rename to DataStructureAndAlgorithm/04 数组.md diff --git a/DataStructureAndAlgorithm/04 顺序表和链表.md b/DataStructureAndAlgorithm/06 顺序表和链表.md similarity index 100% rename from DataStructureAndAlgorithm/04 顺序表和链表.md rename to DataStructureAndAlgorithm/06 顺序表和链表.md diff --git a/DataStructureAndAlgorithm/06 栈与递归.md b/DataStructureAndAlgorithm/07 栈与递归.md similarity index 100% rename from DataStructureAndAlgorithm/06 栈与递归.md rename to DataStructureAndAlgorithm/07 栈与递归.md diff --git a/DataStructureAndAlgorithm/07 字符串.md b/DataStructureAndAlgorithm/08 字符串.md similarity index 100% rename from DataStructureAndAlgorithm/07 字符串.md rename to DataStructureAndAlgorithm/08 字符串.md