封装课堂练习讲解|学习笔记

简介: 快速学习封装课堂练习讲解

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:封装课堂练习讲解】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/626/detail/9690


封装课堂练习讲解

 

内容简介

一、课堂习题

二、代码实现

三、执行结果

 

一、 课堂习题

课堂习题要求:创建程序,在 model 包中定义 Account 结构体:在main 函数中体会 Golang 的封装性。

① Account 结构体要求具有字段:账号(长度在6-10之间)、余额(必须>20)、密码(必须是六位)

②通过 SetXxx 的方法给 Account 的字段赋值,通过 GetXxx 方法获取字段的值。(自己独立完成)

③在 main 函数中测试

 

二、 代码实现

首先打开 VSCode ,新建一个文件夹称为 encapexercise (封装的练习题),在其中再建两个文件夹,一个称为 main ,另一个称为 model 。在 model 中新建一个文件称为 account.go ,输入以下代码:

package model

import (

“fmt”

)

//定义一个结构体account

type account struct {

accountNo string

pwd string

balance float64

} 

//工厂模式的函数-构造函数

func NewAccount(account string, pwd string, balance float64)*account {

if len(accountNo) < 6 || len(accountNo) > 10 {

fmt.Println(“账号的长度不对...”)

return nil

}

if len(pwd) != 6 {

fmt.Println(“密码的长度不对...”)

return nil

}

if balance < 20 {

fmt.Println(“余额数目不对...”)

return nil

}

return &account{

accountNo : accountNo,

pwd : pwd,

balance : balance,

}

}

//方法

//1.存款

func (account *account) Deposite(money float64, pwd string) {

//看下输入的密码是否正确

if pwd != account.pwd {

fmt.Println(“你输入的密码不正确”)

return

}

//看看存款金额是否正确

if money <= 0 {

fmt.Println(“你输入的金额不正确”)

return

}

account.balance += money

fmt.Println(“存款成功~~”)

}

//取款

func (account *account) WithDraw(money float64, pwd string) {

//看下输入的密码是否正确

if pwd != account.pwd {

fmt.Println(“你输入的密码不正确”)

return

}

//看看取款金额是否正确

if money <= 0 || money > account.balance {

fmt.Println(“你输入的金额不正确”)

return

}

account.balance -= money

fmt.Println(“取款成功~~”)

}

//查询余额

func (account *account) Query(pwd string) {

//看下输入的密码是否正确

if pwd != account.pwd {

fmt.Println(“你输入的密码不正确”)

return

}

fmt.Println(“你的账号=%v 余额=%v \n”, account.accountNo,account.balance)

}

再打开 main 包,新建一个文件称为 main.go ,用来测试以上代码是否能用,在 main.go 中输入以下代码:

package main

import (

“fmt”

“go_code/chapter11/encapexercise/model”

)

func main() {

//创建一个account变量

account := model.NewAccount(“jzh11111”,”999999”,40)

if account != nil {

fmt.Println(“创建成功=”,account)

} else {

fmt.Println(“创建失败”)

}

}

 

三、执行结果

1. 代码执行结果

D:\goproject\src\go_code>cd chapter11

D:\goproject\src\go_code\chapter11>dir

驱动器 D 中的卷是 新加卷

卷的序列号是 D2AD-BC9F

D:\goproject\src\go_code\chapter11 的目录

06  15:16      .

06  15:16      ..

06  11:41      abstract

06  15:16      encapexercise

06  14:29      encapsulate

0 个文件          0个字节

5 个目录 33,792,491,520 可用字节

D:\goproject\src\go_code\chapter11>cd encapexercise

D:\goproject\src\go_code\chapter11\encapexercise>go run main.go

CreatcFile main.go: The syston cannot find the file specified.

D:\goproject\src\go_code\chapter11\encapexercise>cd main

D:\goproject\src\go_code\chapter11\encapexercise\main>go run main.go

创建成功= &

image.png2. 测试代码

①现将上文 main/main.go 包中的代码修改账号一处,将“jzh11111”修改为”jzh1”,用来检测是否会显示创建失败,执行结果为:

D:\goproject\src\go_code\chapter11\encapexercise\main>go run main.go

账号的长度不对...

创建失败

②再将上文 main/main.go  包中的代码修改密码一处,将”999999“修改为”000”,执行结果为:

D:\goproject\src\go_code\chapter11\encapexercise\main>go run main.go

密码的长度不对...

创建失败

3. 代码说明

说明:在老师的代码基础上增加如下功能:

通过 SetXxx 的方法给 Account 的字段赋值,通过 GetXxx 方法获取字段的值。(自己独立完成)

在 main 函数中测试

相关文章
|
4月前
|
Java Python
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
【9月更文挑战第18天】在 Python 中,虽无明确的 `interface` 关键字,但可通过约定实现类似功能。接口主要规定了需实现的方法,不提供具体实现。抽象基类(ABC)则通过 `@abstractmethod` 装饰器定义抽象方法,子类必须实现这些方法。使用抽象基类可使继承结构更清晰、规范,并确保子类遵循指定的方法实现。然而,其使用应根据实际需求决定,避免过度设计导致代码复杂。
|
8月前
|
存储 Java 编译器
Java面向对象之——封装
Java面向对象之——封装
|
Go 开发者
一文详解Go语言接口嵌套组合的精髓!
一文详解Go语言接口嵌套组合的精髓!
224 0
|
Java
【Java面向对象】封装的认识与实现
【Java面向对象】封装的认识与实现
101 0
|
8月前
|
Java
【JAVA杂货铺】一文带你走进面向对象编程|构造方法调用 | 代码块分类| 期末复习系列 | (中3)
【JAVA杂货铺】一文带你走进面向对象编程|构造方法调用 | 代码块分类| 期末复习系列 | (中3)
41 0
|
Java
Java面向对象封装
封装的概念 Java封装是一种面向对象的编程方法,它的主要思想是将类的内部细节(包括数据和方法)隐藏起来,对外只提供公共的访问接口,从而保证了程序的安全性和稳定性。 封装具体实现步骤 1、声明类的成员变量时,使用private关键字进行修饰,将变量设为私有属性(只能在类的内部访问)。 2、为每个私有属性提供getter和setter方法,用来读取和修改私有属性。 3、getter方法用于获取私有属性的值,setter方法用于设置私有属性的值。在方法内部,可以添加一些控制语句用于
81 0
|
存储 安全 Java
Java面向对象编程三大特征 - 封装
Java面向对象编程三大特征 - 封装
87 0
|
Java
Java面向对象基础2——封装
简单来说,封装就是正确地设计对象的属性。要注意的是,对象代表什么,就封装对应的数据,并提供数据的对应行为
123 0
Java面向对象基础2——封装
|
Python
python类与对象入门笔记(基础概念扫盲,面向对象三大特征,多态性与鸭子类型,附demo)
python类与对象入门笔记(基础概念扫盲,面向对象三大特征,多态性与鸭子类型,附demo)
121 0
|
Java Scala 开发者
函数递归的课堂练习|学习笔记
快速学习函数递归的课堂练习。