C#从零开始学习(面向对象)(3)

devtools/2024/10/19 10:46:30/

面向对象

本章所有的代码都放在
https://github.com/hikinazimi/head-first-Csharp

  • 类包含方法,方法中包含完成动作的语句,设计良好的类要合理的命名
  • 一些方法有一个返回类型,要使用return返回对应的类型
  • 以public void为开头,可以不用return
  • 从一个类创建一个新的对象时,称为这个类的一个实例
  • 使用static关键字声明类或者方法声明为静态,访问静态方法或字段不需要创建这个类的一个实列
  • 如果一个字段是静态的,他只有一个副本,由所有实例共享

PickRandomCards选牌程序

using System;
using System.Collections.Generic;
using System.Text;namespace PickRandomCards
{class CardPicker{static Random random = new Random();public static string[] PickSomeCards(int numerOfCards){string[] pickedCards = new string[numerOfCards];for (int i = 0; i < numerOfCards; i++){pickedCards[i] = RandomValue() + " of " + RandomSuit();}return pickedCards;}private static string RandomValue(){//1-4的随机数int value = random.Next(1, 5);if (value == 1) return "Spades";if (value == 2) return "Hearts";if (value == 3) return "Culbs";return "Diamonds";}private static string RandomSuit(){int value = random.Next(1, 14);if (value == 1) return "Ace";if (value == 11) return "Jack";if (value == 12) return "Queen";if (value == 13) return "King";return value.ToString();}}
}

选牌为原型的WPF应用(PickACardUI)

将上面创建的游戏使用WPF构建
首先创建一个名为PickACardUI的WPF项目
然后在项目中添加上个项目中MainWindow.xaml.cs文件,鼠标右键项目名,然后添加文件
在这里插入图片描述
然后在文件中更改命名空间为项目名
在这里插入图片描述
使用Grid和StackPanel建立主窗口布局
使用StackPanel堆叠两个控件,使他们在同一个单元格中

        <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Margin="20"><Label Content="How many cards should I pick?" FontSize="20"/><Slider x:Name="numberOfCards" Minimum="1" Maximum="15" TickPlacement="BottomRight"IsSnapToTickEnabled="True" AutoToolTipPlacement="TopLeft" Foreground="Black"/></StackPanel>

然后在按钮上定义点击的效果


<Button Grid.Row="1" Content="Pick some cards" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center" Click="Button_Click" />private void Button_Click(object sender, RoutedEventArgs e){string[] pickedCards = CardPicker.PickSomeCards((int)numberOfCards.Value);listOfCards.Items.Clear();foreach (string card in pickedCards){listOfCards.Items.Add(card);}}

最终结果如下
在这里插入图片描述

JoeAndBob

创建一个类来跟踪他们分别有多少钱

  1. 创建两个"Guy"实例
  2. 设置对象的Cash和Name
  3. 增加方法来给钱和收钱
using System;
using System.Collections.Generic;
using System.Text;namespace JoeAndBob
{class Guy{public string Name;public int Cash;public void WriteMyInfo(){Console.WriteLine(Name + " has " + Cash + " bucks.");}public int GiveCash(int amount){if (amount <= 0){Console.WriteLine(Name + "says: " + amount + "isn't a vaild amount");return 0;}if (amount > Cash){Console.WriteLine(Name + " says: " + "I don't have the enough cash to give you" + Cash);return 0;}Cash -= amount;return amount;}public void ReceiveCash(int amount){if (amount <= 0){Console.WriteLine(Name + " says: " + amount + " isn't an amount I'll take");}else{Cash += amount;}}}
}

类的设计想法

  • 构建的程序需要解决一个问题
  • 思考程序会使用哪些实际实物
  • 为类和方法使用描述性的名字
  • 注意类之间的相似性

至此,我们就学习完了第三章,然后让我们复习一下本章讲了什么

  • 学习了C#中类的定义和应用
  • 学习了如何将一个简单的控制台项目改写成WPF应用

http://www.ppmy.cn/devtools/126981.html

相关文章

Threejs 实现3D 地图(02)创建3d 地图

"d3": "^7.9.0", "three": "^0.169.0", "vue": "^3.5.10" 地图数据来源&#xff1a; DataV.GeoAtlas地理小工具系列 <script setup> import {onMounted, ref} from vue import * as THREE from three im…

业务诊断简介

通过业务诊断功能&#xff0c;维护人员可以根据需要通过命令行创建一个诊断对象。当符合诊断对象的属性特征的用户上线时&#xff0c;设备根据诊断对象为其自动创建诊断实例&#xff0c;并对该实例在接入过程中的状态变化、协议处理结果等信息进行诊断并输出。 诊断对象是具有…

【JavaEE初阶】深入透析文件-IO关于文件内容的操作(四种文件流)

前言 &#x1f31f;&#x1f31f;本期讲解关于CAS的补充和JUC中有用的类&#xff0c;这里涉及到高频面试题哦~~~ &#x1f308;上期博客在这里&#xff1a;【JavaEE初阶】文件-IO之实现文件系统的操作如何进行实现-CSDN博客 &#x1f308;感兴趣的小伙伴看一看小编主页&…

【最新华为OD机试E卷-支持在线评测】水仙花数(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

vue + 百度地图GL版判断一个点位是否在地图可视区内

利用BMapGLLib中isPointInRect 因为没有找到官方文档因此直接下载了该工具的源码&#xff0c;复制以下部分到自己的项目中&#xff0c;避免再次引用完整的BMapGLLib脚本 关键方法 isPointInRect(point, bounds) {if (!(point.toString() "Point" || point.toString(…

三菱FX PLC设计一个电子钟程序实例

在这里介绍三菱FX系列PLC的计数器C的功能、结构&#xff0c;计数过程及工作原理。 功能&#xff1a; 对内部元件X、Y、M、S、T、C的信号进行计数。 结构&#xff1a; 线圈、触点、设定值寄存器、当前值寄存器。 地址编号&#xff1a; 字母C&#xff0b;&#xff08;…

郑州大学第一附属医院许建中教授专家团队会诊室揭牌仪式在郑州长江中医院成功举行

近日&#xff0c;郑州大学第一附属医院许建中教授专家团队会诊室揭牌仪式暨骨关节病非手术治疗技术推广计划启动仪式在郑州举行。郑州大学第一附属医院许建中教授及其专家团队&#xff0c;郑州长江中医院专家团出席了本次活动。 关节病&#xff0c;尤其是膝关节、肩关节等关节的…

Qt_软件添加版本信息

文章内容: 给生成的软件添加软件的版权等信息 #include <windows.h> //中文的话增加下面这一行 #pragma code_page(65001)VS_VERSION_INFO VERSIONINFO