离基础班结束大概还有三天
说实话,老赵(传智播客 赵剑宇)教的真的好,虽然最近学的感觉好难,但是每个知识点都学的很细致,虽然真的很头疼,但是当越学越发现当时还是大白的时候写的代码好简单。今天真的好累,早上跑操早自习还上课,然后十点多去把昨天欠的代码学完了,吃了个饭又回来把昨天的代码复习一遍。看代码觉得写代码好简单,但是自己去做一个题的时候就一点思路都没有,感觉找不到方向,只能看着老赵写一行我照着抄一行,然后自己想一想这一步实现了什么功能,却从没想过这一行是怎么想出来的。挺担心以后自己写软件的时候我会不会无从下手,不知怎么写了。今天下午一节电工实训下来真的好累不想动,眼睛又疼又是麦粒肿。代码也不想传到博客里来,但是想想还是坚持下去吧。嗯。好接下来贴代码。
今天上午写的是模拟硬盘读写数据
先是思路图
然后是贴代码。。。。。。。。。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 模拟移动硬盘 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 //用多态来实现 将移动硬盘或者U盘或者MP3插到电脑上进行读写 14 //MobileStorage md = new MobileDisk(); 15 //MobileStorage u = new UDisk(); 16 //MobileStorage mp3 = new MP3(); 17 MobileStorage ms = new MP3();//这里定义是什么设备插入 18 Computer cpu = new Computer(); 19 //cpu.Ms = ms; 20 //cpu.CpuRead(); 21 //cpu.CpuWrite(); 22 cpu.CpuRead(ms); 23 cpu.CpuWrite(ms);//记得传参进去 24 Console.ReadKey(); 25 } 26 } 27 public abstract class MobileStorage 28 { 29 public abstract void Read(); 30 public abstract void Write(); 31 } 32 public class MobileDisk : MobileStorage 33 { 34 public override void Read() 35 { 36 Console.WriteLine("移动硬盘在读取数据"); 37 } 38 public override void Write() 39 { 40 Console.WriteLine("移动硬盘在写入数据"); 41 } 42 } 43 public class UDisk : MobileStorage 44 { 45 public override void Read() 46 { 47 Console.WriteLine("U盘在读取数据"); 48 } 49 public override void Write() 50 { 51 Console.WriteLine("U盘在写入数据"); 52 } 53 } 54 public class MP3 : MobileStorage 55 { 56 public override void Read() 57 { 58 Console.WriteLine("MP3在读取数据"); 59 } 60 public override void Write() 61 { 62 Console.WriteLine("MP3在写入数据"); 63 } 64 public void PlayMusic() 65 { 66 Console.WriteLine("正在播放音乐"); 67 } 68 } 69 public class Computer 70 { 71 //private MobileStorage _ms; 72 //public MobileStorage Ms 73 //{ 74 // get 75 // { 76 // return _ms; 77 // } 78 79 // set 80 // { 81 // _ms = value; 82 // } 83 //} 84 85 //public void CpuRead() 86 //{ 87 // Ms.Read(); 88 //} 89 //public void CpuWrite() 90 //{ 91 // Ms.Write(); 92 //} 93 public void CpuRead(MobileStorage ms)//父类的数据传进来 94 { 95 ms.Read();//这就可以调用父类定义的方法啦(~ ̄▽ ̄)~* 96 } 97 public void CpuWrite(MobileStorage ms) 98 { 99 ms.Write(); 100 } 101 } 102 }
这个就是变量可以点出来方法让人很难理解,这个类是如何传进来的还是头疼想不过来。跟这个有点相似的头疼的就是传参,传参现在写多了也差不多可以理解了,以后这个知识点可能会理解的好一些。
上午就是这样。。。
下午主要交了一些零散的知识。像五个访问修饰符,internal,public,protected,private,protected internal。
也挺难的,感觉呵呵不好说。先上代码吧,上两个感觉最难的。。。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.IO; 7 using System.Runtime.Serialization.Formatters.Binary; 8 9 namespace 序列化和反序列化 10 { 11 class Program 12 { 13 static void Main(string[] args) 14 { 15 //序列化 将对象转化为二进制 16 //反序列化 将二进制转化为对象 17 //作用 传输数据。 18 19 20 //要将P这个对象传输给对方电脑 21 //Person p = new Person(); 22 //p.Name = "张三"; 23 //p.Gender = '男'; 24 //p.Age = 29; 25 //using (FileStream fsWrite = new FileStream(@"C:\Users\就是栗子桑\Desktop\new.txt", FileMode.OpenOrCreate, FileAccess.Write)) 26 //{ 27 // //开始序列化对象 28 // BinaryFormatter bf = new BinaryFormatter(); 29 // bf.Serialize(fsWrite, p); 30 //} 31 //Console.WriteLine("序列化成功"); 32 33 34 //接受对方发送过来的二进制 反序列化 流 35 Person p; 36 using (FileStream fsRead = new FileStream(@"C:\Users\就是栗子桑\Desktop\new.txt", FileMode.OpenOrCreate, FileAccess.Read)) 37 { 38 BinaryFormatter bf = new BinaryFormatter(); 39 p = (Person)bf.Deserialize(fsRead); 40 } 41 Console.WriteLine(p.Name); 42 Console.WriteLine(p.Age); 43 Console.WriteLine(p.Gender); 44 Console.ReadKey(); 45 } 46 } 47 [Serializable] 48 public class Person 49 { 50 private string _name; 51 public string Name 52 { 53 get 54 { 55 return _name; 56 } 57 58 set 59 { 60 _name = value; 61 } 62 } 63 private int _age; 64 public int Age 65 { 66 get 67 { 68 return _age; 69 } 70 71 set 72 { 73 _age = value; 74 } 75 } 76 private char _gender; 77 public char Gender 78 { 79 get 80 { 81 return _gender; 82 } 83 84 set 85 { 86 _gender = value; 87 } 88 } 89 } 90 }
这个是序列化和反序列化,就是还不太熟悉第一次见。熟了就好了。
然后接下来是简单工厂模式,这一课老赵讲的挺扯的,感觉听不出什么所以然(哈哈哈是我水平低)
贴上来吧。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 简单工厂设计模式 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 Console.WriteLine("请输入你想要的笔记本品牌"); 14 string brand = Console.ReadLine(); 15 NoteBook nb = GetNoteBook(brand); 16 nb.SayHello(); 17 Console.ReadKey(); 18 } 19 public static NoteBook GetNoteBook(string brand) 20 { 21 NoteBook nb = null; 22 switch (brand) 23 { 24 case "Lenovo": nb = new Lenovo(); 25 break; 26 case "Dell":nb = new Dell(); 27 break; 28 case "Acer":nb = new Acer(); 29 break; 30 case "IBM":nb = new IBM(); 31 break; 32 } 33 return nb; 34 } 35 } 36 public abstract class NoteBook 37 { 38 public abstract void SayHello(); 39 } 40 41 public class Lenovo : NoteBook 42 { 43 public override void SayHello() 44 { 45 Console.WriteLine("我是联想"); 46 } 47 } 48 public class Dell : NoteBook 49 { 50 public override void SayHello() 51 { 52 Console.WriteLine("我是戴尔"); 53 } 54 } 55 public class IBM : NoteBook 56 { 57 public override void SayHello() 58 { 59 Console.WriteLine("我是IBM"); 60 } 61 } 62 public class Acer : NoteBook 63 { 64 public override void SayHello() 65 { 66 Console.WriteLine("我是宏基"); 67 } 68 } 69 }
还有一些零零散散的笔记,我自己也看不懂了哈哈哈,好了就是这样子了,感觉还是要努力,不然今年年底就完不成进度了。。。
好了今天就是这样。
希望明天更好。2015-12-11