当前位置: 代码迷 >> 综合 >> C#学习(面向对象)Day05——面向过程和面向对象,访问修饰符,类和对象,字段、属性、方法
  详细解决方案

C#学习(面向对象)Day05——面向过程和面向对象,访问修饰符,类和对象,字段、属性、方法

热度:3   发布时间:2023-12-05 15:51:31.0

1.面向过程和面向对象,类和对象,字段

using System;//-----------------理论部分------------------------------------------
//1.面向过程和面向对象
//面向过程
//分析出解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候依次调用就好了
//面向对象
//把构成问题事务分解成各个对象
//建立对象的不是为了完成一个步骤,是为了描述某个事物在整个解决问题的步骤中的行为
//特点:抽象、封装、继承、多态
//优点:易维护、易复用、易扩展,可以设计出低耦合的系统,使系统更加灵活,更加易于维护//2.类和对象
//类是引用类型放在托管堆里,结构体是值类型占内存的放在线程栈里*************************
//什么是类?
//具备某些共同特征的实体的集合,是一种抽象的数据类型,也是自定义的数据类型,和枚举和结构体类似
//如何描述类?
//找出类的特征和行为,例如人,特征有年龄,姓名,生日,爱好;行为有吃饭,睡觉,跑步,思考等//3.字段和方法
//字段
//字段就是描述一个类特征的变量
//----------------------------字段的创建
//默认为私有的
//----------------------------字段的访问
//方法
//封装了一段有特定功能的代码段,用来描述一个类的行为
//----------------------------方法创建
//访问修饰符 返回值类型 方法名(参数列表){
//    代码段;
//    返回值;
//}
//有参有返回值,有参无返回值,无参有返回值,无参无返回值namespace Day09_1
{//访问修饰符包括:(范围依次扩大)//private:在对象内部的可以访问;//protected:只有该类对象及其子类对象可以访问//public:所有对象都可以访问;//internal:同一个程序集的对象可以访问;//protected internal:访问限于当前程序集或派生自包含类的类型。/// <summary>/// 美女类别/// </summary>class BeautifulGirl{//成员字段public string name = "美女";  //可以给默认值,类可以,结构体不行*****************public byte age = 18;//成员方法/// <summary>/// 说话方法/// void 返回值类型 -- 表示不返回任何结果/// Say 方法名称/// (参数)/// {方法体}/// </summary>public void Say()             //无参无返回方法{Console.WriteLine($"我叫" + this.name);   //****************this表示当前对象,用哪个对象调用,就代表谁,无重名时,可以省略Console.WriteLine($"今年" + this.age +"岁");Console.WriteLine("我是美女!");}}/// <summary>/// 人类【类别】/// </summary>class Person{//特征/// <summary>/// 姓名/// </summary>public string name = "sdadsa";/// <summary>/// 年龄/// </summary>public byte age = 0;/// <summary>/// 爱好/// </summary>private string hobby = "吃饭";//行为/// <summary>/// 获取年级/// </summary>/// int  返回值数据类型/// <returns>返回年级</returns>public int GetGrade()   //无参有返回值  {int grade = age - 6;//如果有分支结构,确保每个分支都有返回值//return 表示返回结果。//作用://1.返回结果,必须和返回值类型匹配//2.中止方法,表示方法执行结束if (grade <= 0 || grade >12){return -1;}return grade;}/// <summary>/// 展示年级/// </summary>public void ShowGrade() //无参无返回值{int g = GetGrade();if (g == -1){Console.WriteLine(name + "没上学或没毕业");}else{Console.WriteLine(name + "今年上" + g +"年级");}}//C#中的方法参数,可以设置很多个 /// <summary>/// 设置新爱好/// </summary>public void SetNewHobby(string newHobby)   //有参无返回值  newHobby  形式参数--形参{//设置新的爱好hobby = newHobby;}/// <summary>/// 显示新爱好/// </summary>public void ShowHobby()       //无参无返回值{Console.WriteLine($"{name}的爱好是:{hobby}");}/// <summary>/// /// </summary>/// <param name="littleA">第一个字符</param>/// <param name="LittleB">第二个字符</param>public void NameContains(char littleA, char LittleB)  //多个参数的{foreach (var item in this.name){if (item == littleA){Console.WriteLine($"{name}里包含\"{littleA}\"这个字符");}else if (item == LittleB){Console.WriteLine($"{name}里包含\"{LittleB}\"这个字符");}}}/// <summary>/// 遇见一个朋友/// </summary>/// <param name="newFriend"></param>public void MeetAFriend(Person newFriend){Console.WriteLine("今天遇到一个朋友");Console.WriteLine("他叫" + newFriend.name);Console.WriteLine("他的爱好" + newFriend.hobby);}}class Program{//在类中的类,叫做内部类class Animal   {}static void Main(string[] args){//----------------------代码部分-----------------------------------------BeautifulGirl liuyifei = new BeautifulGirl();   //对象实例化,才分配内存liuyifei.name = "刘亦菲";Console.WriteLine(liuyifei.name);//得到真实美女的对象liuyifei.Say();//让刘亦菲说话Person xiaoming = new Person();xiaoming.name = "小明";xiaoming.age = 12;//展示年级xiaoming.ShowGrade();//修改爱好xiaoming.SetNewHobby("滑雪");//展示爱好xiaoming.ShowHobby();xiaoming.NameContains('小','明');Person baby = new Person();baby.name = "anglebaby";baby.SetNewHobby("唱歌");xiaoming.MeetAFriend(baby);}}
}

2.属性、方法

using System;/* 基础数据类型*  int           值类型 *  float         值类型*  bool          值类型*  char          值类型*  string        引用类型*  array int[]   引用类型*  enum          值类型  自定义类型*  struct        值类型  自定义类型*  class         大部分是引用类型,特殊的类是值类型   自定义类型*//**     class 类名{*        字段*        属性*        方法*     }*/namespace Day09_2
{public class Person{private string name;private string Hobby { get; set; }  //属性访问器的快捷写法//大驼峰命名法public string Name       //属性  ----全称:属性访问器{get => name;  //get访问器set => name = value; //set访问器}}class Program{static void Main(string[] args){Person xiaoming = new Person();xiaoming.Name = "小明";Console.WriteLine($"{xiaoming.Name}");}}
}

3.作业:

using System;namespace Day09_3
{/// <summary>/// 动物类/// </summary>public class Animal{public string name;        //动物名字public string AnimalType;  //动物类别public string sex;         //性别public void Eat(){Console.WriteLine("正在吃东西...");}public void Run(){Console.WriteLine("正在跑...");}public void Sleep(){Console.WriteLine("正在睡觉...");}public void Call(){Console.WriteLine("正在吼叫...");}}/// <summary>/// 数学工具类/// </summary>public class MathTool{public int Number;/// <summary>/// 判断偶数/// </summary>/// <param name="_number">void</param>public void JudgeEven(){Console.WriteLine("请输入一个整数:");int number = int.Parse(Console.ReadLine());if (number % 2 == 0){Console.WriteLine($"{number}是偶数");}else{Console.WriteLine($"{number}不是偶数");}}/// <summary>/// 打印数组/// </summary>public void pritArray(){int[] array = new[] {1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 0};for (int i = 0; i < array.Length; i++){Console.Write($"{array[i]} ");}Console.WriteLine();}/// <summary>/// 输出数组最大值/// </summary>public void maxOfArray(){int[] array = new[] {1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 0};int max = array[0];for (int i = 1; i < array.Length; i++){if (max < array[i])max = array[i];}Console.WriteLine(max);}public void BubbleSort(){int[] array = new[] {1, 2, 24, 4, 5, 10, 7, 68, 8, 9, 10, 0};for (int i = 0; i < array.Length - 1; i++){for (int j = 0; j < array.Length - i - 1; j++){int temp;if (array[j] >array[j+1]){temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;}}}for (int i = 0; i < array.Length; i++){Console.Write($"{array[i]} ");}}public void Narcissus(){int a, b, c;for (int i = 100; i < 1000; i++){a = i % 10;b = (i / 10) % 10;c = (i / 100) % 10;if (i == a * a * a + b * b * b + c * c * c){Console.WriteLine(i);}}}}/// <summary>/// 装备类别/// </summary>enum Type{Attack, //攻击Defense, //防御Magic,   //法术Move,    //移动Jungle   //打野}/// <summary>/// 武器类/// </summary>public class Weapon{public int upATK;     //加攻击力public int upHP;      //加血量public int upDepensive; //加防御力public int upMove;     //加移动速度//public Type type;     //武器类型public void weapon(int _upATK,int _upHP,int _upDepensive,int _upMove){upATK = _upATK;upHP = _upHP;upDepensive = _upDepensive;upMove = _upMove;Console.WriteLine($"加攻击力:{upATK},加血量:{upHP},加防御力:{upDepensive},加移速:{upMove}");}}/// <summary>/// 英雄类/// </summary>public class Hero{public int HP = 100; //血量public int ATK = 10; //攻击力public string name = "小明"; //名字public int depense = 0; //防御力public int move = 20; //移动速度public int lv = 1; //等级public void creatHero(int _HP,int _ATK,string _name,int _depense,int _move,int _lv){HP = _HP;ATK = _ATK;name = _name;depense = _depense;move = _move;lv = _lv;}public void showHero(){Console.WriteLine($"血量:{HP},攻击力:{ATK},英雄名字:{name},防御力:{depense},移速:{move},等级:{lv}");}/// <summary>/// 穿戴装备/// </summary>public void dressWeapon(Weapon weapon){HP = HP + weapon.upHP;ATK = ATK + weapon.upATK;depense = depense + weapon.upDepensive;move = move + weapon.upMove;}/// <summary>/// 卸载装备/// </summary>public void unDressWeapon(Weapon weapon){HP = HP - weapon.upHP;ATK = ATK - weapon.upATK;depense = depense - weapon.upDepensive;move = move - weapon.upMove;Console.WriteLine($"血量:{HP},攻击力:{ATK},防御力:{depense},移速:{move}");}/// <summary>/// 攻击英雄/// </summary>public void attackHero(Hero hero){this.HP = this.HP + this.depense - ATK;}/// <summary>/// 受到其他英雄攻击/// </summary>/// <param name="hero"></param>public void attacked(Hero hero){HP = HP + depense - hero.ATK;if (HP <= 0){Console.WriteLine("本英雄已死亡...");}else{Console.WriteLine($"{name}受到{hero.name}攻击,剩余血量{HP}");}}/// <summary>/// 击败英雄升级和增加攻击力/// </summary>/// <param name="hero"></param>public void upLv(Hero hero){this.HP = this.HP + this.depense - hero.ATK;if (this.HP <= 0){lv++;ATK += 200;}hero.showHero();}}class Program{static void Main(string[] args){#region 第二题第一问/*MathTool even = new MathTool();even.JudgeEven();*/#endregion#region 第二题第二问/*MathTool pritArray = new MathTool();pritArray.pritArray();*/#endregion#region 第二题第三问/*MathTool maxOfArray = new MathTool();maxOfArray.maxOfArray();*/#endregion#region 第二题第四问/*MathTool bubbleSort = new MathTool();bubbleSort.BubbleSort();*/#endregion#region 第二题第五问/*MathTool narcissus = new MathTool();narcissus.Narcissus();*/#endregion#region 第三题第一问//创建新武器Weapon newWeapon = new Weapon();newWeapon.weapon(10,30,20,30);//创建新英雄Hero newHero = new Hero();newHero.creatHero(100,0,"小红",0,10,1);newHero.showHero();//戴上武器newHero.dressWeapon(newWeapon);newHero.showHero();Console.WriteLine();#endregion#region 第三题第二问//卸下武器newHero.unDressWeapon(newWeapon);Console.WriteLine();#endregion#region 第三题第四问//受到攻击Hero newHero01 = new Hero();newHero01.creatHero(100,10,"小明",10,10,1);newHero.attacked(newHero01);Console.WriteLine();#endregion#region 第三题第五问//升级newHero.upLv(newHero01);#endregion}}
}