面向对象编程思想-抽象 | 学习笔记

简介: 快速学习面向对象编程思想-抽象

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

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


面向对象编程思想-抽象

 

内容简介:

一、面向对象编程三大特性

二、面向对象编程思想-抽象

 

一、 面向对象编程三大特性

基本介绍: Golang 仍然有面向对象编程的继承、封装和多态的特性,只是实现的方式和其他 OOP 语言不一样。按理说应当先讲面向对象编程的三大特性,但是在此之前,需要先介绍抽象的概念,由于抽象是贯穿在面向对象编程中的。

 

二、面向对象编程思想-抽象

1. 如何理解抽象

前面去定义一个结构体的时候,实际上就是把一类事物的共有的属性(字段)和行为(方法)提取出来,形成一个物理模型(结构体)。这种研究问题的方法称为抽象。抽象准确的来说是一种研究问题的方法,或者是一种编程的思维方式,抽象始终是贯穿在面向对象编程中。

2. 例子

image.png

其中,在属性/字段中:1、账号:如果没有账号那么这个银行卡是不存在的;2、密码:若没有设置银行密码,是空的,那空密码就是密码;3、余额:若银行卡内没有余额,余额为0,那么0就是余额,若欠着10000元,那么-10000就是余额。在行为/方法中:2、取款:虽然有些银行卡只能存款不能取款,只是因为该取款的人不是你,应由相关银行或者机构去取款,任何一个银行卡都有取款功能。

3. 代码实现

首先建一个文件夹,将文件名称称为 chapter11 ,在里面新建一个文件夹叫 abstract (是抽象的意思),新建一个文件叫 main.go ,在 main.go 中先把共同的代码部分复制过来,写一份主函数 main ,写完后根据抽象的思想一步一步完成代码实现,如下所示:

package main

import (

“fmt”

)

//定义一个结构体Account

type Account struct {

AccountNo string

Pwd string

Balance float64

}

//方法

//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(“存款成功~~”)

}

//2.取款

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(“取款成功~~”)

 

}

//3.查询余额

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

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

if pwd != account.Pwd {

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

return

}

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

}

Func main(){

//测试一把

account := Account{

AccountNo : ”gs1111111”,

Pwd : “666666”,

Balance : 100.0,

}

account.Query(“666666”)

}

 

for {

//这里可以做的更加灵活,就是让用户通过控制台来输入命令...

//菜单...

account.Query(“666666”)

account.Deposite(200.0,”666666”)

account.Query(“666666”)

account.WithDraw(150.0,”666666”)

account.Query(“666666”)

}

下面为测试结果

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

你的账号为=gs1111111 余额=100

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

你的账号为=gs1111111 余额=100

存款成功~~

你的账号为=gs1111111 余额=300

取款成功~~

你的账号为=gs1111111 余额=150

注意:对上面代码的要求

①自己独立完成

②增加一个控制台的菜单,可以让用户动态的输入命令和选项

相关文章
|
3月前
|
双11
访问者模式问题之在软件工程中,根据特性和场景决定是采用面向对象的抽象还是访问者的抽象,如何实现
访问者模式问题之在软件工程中,根据特性和场景决定是采用面向对象的抽象还是访问者的抽象,如何实现
|
5月前
|
Java 开发者
Java面向对象编程(OOP)的四个主要概念
【6月更文挑战第19天】Java OOP的基石是封装、抽象、继承和多态。封装是通过类隐藏数据细节;抽象简化复杂性,用接口和抽象类实现;继承让子类从父类继承属性和行为,促进代码重用;多态一个接口可有多种形态,分编译时和运行时。这些概念支持灵活且可扩展的软件设计。
44 1
|
6月前
|
程序员 C#
C#编程中的面向对象编程思想
【4月更文挑战第21天】本文探讨了C#中的面向对象编程,包括类、对象、封装、继承和多态。类是对象的抽象,定义属性和行为;对象是类的实例。封装隐藏内部细节,只暴露必要接口。继承允许类复用和扩展属性与行为,而多态使不同类的对象能通过相同接口调用方法。C#通过访问修饰符实现封装,使用虚方法和抽象方法实现多态。理解并应用这些概念,能提升代码的清晰度和可扩展性,助你成为更好的C#程序员。
88 4
什么是面向对象,如何用面向对象的思想写代码
什么是面向对象,如何用面向对象的思想写代码
|
6月前
|
Serverless 对象存储 C++
第十三章:C++面向对象编程思想详解
第十三章:C++面向对象编程思想详解
111 0
|
存储 Java 编译器
面向对象的思想(2)
面向对象的思想(2)
73 0
面向对象基础-抽象
面向对象基础-抽象
61 0
面向对象概念
1. Coad和Yourdon给出了一个定义:面向对象=对象+类+继承+通信 2. 如果一个软件系统使用这样4个概念设计和实现,则我们认为这个软件系统是面向对象的 什么是对象(object)
88 0
C++面向对象的概念和特点
C++面向对象的概念和特点
|
存储 设计模式 前端开发
【Java设计模式 面向对象设计思想】四 基于接口而非实现编程
【Java设计模式 面向对象设计思想】四 基于接口而非实现编程
98 0