面向对象编程应用实例|学习笔记

简介: 快速学习面向对象编程应用实例

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

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


面向对象编程应用实例

 

内容介绍:

一、面向对象编程的步骤

二、学生案例

三、小狗案例

四、盒子案例

五、景区门票案例

 

一、面向对象编程的步骤

1)声明(定义结构体,确定结构体名

2)编写结构体的字段

3)编写结构体的方法

 

二、学生案例

1) 自定义编写一个student结构体,包含name、gender、age、id、score字段,分别为string.string、int、int、float64类型。

2) 结构体中声明一个say方法,返回string类型,方法返回信息中包含所有字段值。

3) 在main方法中,创建Student结构体实例(变量),并访问say方法,并将调用结果打印输出。

在chapter10中新建一个文件夹命名为oopexercise,并建立main.go文件。输入共用代码:

package main

import (

"fmt"

写出主函数func main(){},编写一个结构体,题目中要求需要有以下字段:name、gender、age、id、score,分别是string.string、int、int、float64类型,则需要输入以下代码:

type student struct {

name string,

gender string

age int

id int

score float64

同时要有一个方法say,say这个方法能够返回所有字段的值,代码为:func (student*Student)为了方便我们直接把它声明成指针类型,这样可以提高开发效率。输入say()string {}表示没有参数的传入,然后格式化得到各个信息,代码为infostr := fmt.Sprintf("student的信息 name=[%v] gender=[%v], age=[%v] id=[%v] score=[%v]",student.name, student.gender,student.age,student.id, student.score)。然后将其返回输入return infostr

}。输入:var stu = student{创建一个student实例变量,再对各个字段进行赋值:

name : "tom",

gender : "male",

age : 18,

id : 1000,

score : 99.98,

}

输入:fmt.Println(stu.say())完成输出。

}

运行后发现效果与想象一致。

l 核心代码:

type student struct {

name string,

gender string

age int

id int

score float64

func (student*Student) say()string {

infostr := fmt.Sprintf("student的信息 name=[%v] gender=[%v], age=[%v] id=[%v] score=[%v]",

student.name, student.gender,student.age,student.id, student.score)

return infostr

}

func main() {

//测试

//创建一个student实例变量

var stu = student{

name : "tom",

gender : "male",

age : 18,

id : 1000,

score : 99.98,

}

fmt.Println(stu.say())

}

 

三、小狗案例

小狗案例[学员课后练习]

1)编写一个Dog结构体,包含name、age、weight字段

2)结构体中声明一个say方法,返回string类型,方法返回信息中包含所有字段值。

3)在main方法中,创建Dog结构体实例(变量),并访问say方法,将调用结果打印输出。

 

四、盒子案例(面向对象案例)

1)编程创建一个Box结构体,在其中声明三个字段表示一个立方体的长、宽和高,}

长宽高要从终端获取

2)声明一个方法获取立方体的体积。

3)创建一个Box结构体变量,打印给定尺寸的立方体的体积。

根据面向对象的编程规则,首先把结构体创建出来,type Box struct {,该结构体是struct类型。字符段长宽高都是都是float64类型,输入字符段:

len f1oat64

width float64

height float64

}

然后获取立方体的体积,输入func (box *Box) getVolumn()float64 {

return box.len*box.width* box.height}。下面进行测试,首先去创建一个box结构体变量var box Box,然后进行赋值:

box.len = 1.1

box.width =2.0

box.height =3.0

再去调用方法,输入volumn := box.getVolumn(),输出则需要以下代码:fmt.Printf("体积为=%.2f",volumn)

}

l 核心代码:

type Box struct {

len f1oat64

width float64

height float64

}

//声明一个方法获取立方体的体积

func (box *Box) getVolumn()float64 {

return box.len*box.width* box.height

}

//测试代码

var box Box

box.len = 1.1

box.width =2.0

box.height =3.0

volumn := box.getVolumn()

fmt.Printf("体积为=%.2f",volumn)

}

 

五、景区门票案例

1)一个景区根据游人的年龄收取不同价格的门票,比如年龄大于18,收费20元,其它情况门票免费.

2)请编写visitor结构体,根据年龄段决定能够购买的门票价格并输出

名字和年龄通过控制台输入,而且当输入姓名为n的时候就需要退出程序。因此需要一个循环,并在循环里进行判断。首先要创建一个visitor结构体,代码为type Visitor struct {},结构体类型为struct。结构体中的字段有年龄(Age),还有名字(Name),分别是int类型和string类型,输入:Name string Age int,写入字段。此时还有一个方法能够计算每个姓名对应年龄下的门票,通过直接绑定的方法,并利用visitor的指针类型,代码为:func(visitor *Visitor) showPrice(){}。通过判读得出每位游客的景区票价,输入代码:

if visitor.Age >18 {

fmt. Printf("游客的名字为%v年龄为%v收费20元 \n", visitor.Name, visitor.Age)

}else {

fmt. Printf("游客的名字为%v年龄为%v免费\n", visitor.Name, visitor.Age)

}

如果参观游客的年龄大于18岁,则收费20块钱,输出结果为:游客的名字为年龄为收费20块钱,简单明了。如果参观游客的年龄不是大于18岁,那就是其他情况,即可以免费参观。而对年龄的严谨判断,比如当游客的年龄小于等于8岁或者大于等于90岁时,我们也进行一个判断,并输出以下内容:考虑到安全,请不要玩了,则需要以下代码:

if visitor.Age >=90 || visitor.Age <=8 {

fmt.Print1n("考虑到交全,就不要玩了")

return

测试的时候,首先需要创建一个visitor,但是名字还有年龄是需要输入的,所以此时需要利用for循环(var v Visitorfor for{}),并完成提示:请输入你的名字,然后得到Name的值(fmt.Print1n(”请输入你的名字")fmt.Scan1n(&v. Name));继续接受游客的年龄(fmt.Println("请输入你的年龄")fmt.Scan1n(&v. Age))。然后去调用价格的判断(v.showPrice()),但是题目中还有一个要求,需要在Name为n时,退出程序,则需要添加一个判断并提示退出程序:

if v.Name == "n”{

fmt.Println("退出程序....")

break

l 核心代码:

type Visitor struct {

Name string

Age int

}

func(visitor *Visitor) showPrice(){

if visitor.Age >=90 || visitor.Age <=8 {

fmt.Print1n("考虑到交全,就不要玩了")

return

}

if visitor.Age >18 {

fmt. Printf("游客的名字为%v年龄为%v收费20元 \n", visitor.Name, visitor.Age)

}else {

fmt. Printf("游客的名字为%v年龄为%v免费\n", visitor.Name, visitor.Age)

}

//测试:这段代码放在main函数中

var v Visitorfor

for{

fmt.Print1n(”请输入你的名字")

fmt.Scan1n(&v. Name)

if v.Name == "n”{

fmt.Println(“退出程序....")

break

}

fmt.Println("请输入你的年龄")

fmt.Scan1n(&v. Age)

v.showPrice()

}

}

相关文章
|
6月前
|
Python
面向对象编程:核心概念与实践
面向对象编程:核心概念与实践
90 0
|
10天前
|
缓存 开发者 网络架构
ArkTS 函数方法基础:掌握核心编程概念
本文深入探讨了ArkTS中的函数和方法,涵盖函数声明、参数处理、返回类型、作用域、函数类型等内容,帮助开发者掌握ArkTS的核心编程概念。通过实例讲解可选参数、rest参数、默认参数等特性,并讨论函数在面向对象编程、性能优化和错误处理中的应用,助力开发者编写更健壮、可维护的代码。
148 0
|
5月前
|
JSON IDE Java
Java反射详解:核心概念、使用方法与实际应用
Java反射详解:核心概念、使用方法与实际应用
81 2
|
6月前
|
C++
C++从入门到精通:2.1.2函数和类——深入学习面向对象的编程基础
C++从入门到精通:2.1.2函数和类——深入学习面向对象的编程基础
|
6月前
|
Java
JAVA面向对象概述
JAVA面向对象概述
21 1
|
Java
Java面向对象进阶3——多态的概述及特点
在编程语言和类型论中,多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口。多态类型(polymorphic type)可以将自身所支持的操作套用到其它类型的值上。计算机程序运行时,相同的消息可能会送给多个不同的类别之对象,而系统可依据对象所属类别,引发对应类别的方法,而有不同的行为。简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作。多态也可定义为“一种将不同的特殊行为和单个泛化记号相关联的能力”。
106 0
Java面向对象进阶3——多态的概述及特点
|
设计模式 前端开发
前端通用编程基础的设计模式之装饰器
在前端开发中,我们常常需要对现有的函数或者对象进行扩展和修饰。这时候就需要使用装饰器模式来实现动态地添加新功能,而不影响原有功能的实现。
150 0
|
Java
Java面向对象基础1——基础概念
Java面向对象基础1——基础概念
98 0
Java面向对象基础1——基础概念
|
网络协议 Java 测试技术
继承快速入门应用实例|学习笔记
快速学习继承快速入门应用实例
继承快速入门应用实例|学习笔记
下一篇
无影云桌面