golang面向对象编程思想

抽象介绍:

  在定义一个结构体的时候,实际上就是把一类事物的共有属性(字段)和行为(方法) 提取出来,形成一个物理模型(模板),这种研究问题的方法称为抽象。

封装:

  把抽象出的字段和对字段的操作封装在一起,数据被保护在内部,程序的其它包只有通过被授权的操作(方法),才能对字段进行操作。

  1)将结构体、字段(属性)的首字母小写

  2)给结构体所在包提供一个工厂模式的函数,首字母大写,类似一个构造函数

  3)提供一个首字母大写的Set方法(类似其它语言的public),用于对属性判断并赋值

 model.go

package model

import (
    "fmt"
)

type account struct {
    username string
    password string
    balance float64
}

func NewAccount() *account {
    return &account{}
}

// 设置账号
func (user *account) SetUsername(username string) {
    if len(username) < 6 && len(username) > 10 {
        fmt.Println("账号长度必须是6到10位")
        return
    }
    user.username = username
}

func (user *account) GetUsername() string {
    return user.username
}

// 设置密码
func (user *account) SetPassword(password string) {
    if len(password) != 6 {
        fmt.Println("密码必须是6位")
        return
    }
    user.password = password
}

func (user *account) GetPassword() string {
    return user.password
}

// 设置余额
func (user *account) SetBalance(balance float64) {
    if balance < 20 {
        fmt.Println("余额必须大于20")
        return
    }
    user.balance = balance
}

func (user *account) GetBalance() float64 {
    return user.balance
}

main.go

package main

import (
    "fmt"
    "model"
)

func main() {
    user := model.NewAccount()
    user.SetUsername("admin123")
    user.SetPassword("123456")
    user.SetBalance(20)
    fmt.Println(user.GetUsername(), user.GetPassword(), user.GetBalance())
}

继承:

  

原文地址:https://www.cnblogs.com/xiangxiaolin/p/12094389.html

时间: 2024-10-07 06:57:44

golang面向对象编程思想的相关文章

面向对象编程思想(OOP)

本文我将从面向对象编程思想是如何解决软件开发中各种疑难问题的角度,来讲述我们面向对象编程思想的理解,梳理面向对象四大基本特性.七大设计原则和23种设计模式之间的关系. 软件开发中疑难问题: 软件复杂庞大 很多软件进入维护阶段 需求的不断变更 软件开发中存在很多其他的问题,上面只是从程序开发和设计的角度看到的部分问题.需求解决上面软件开发中的问题,就要求我们编写(设计)的软件具有很好的可读性.可维护性和可扩展性.我们需要保证代码具有高内聚低耦合. 下面将简单介绍面向对象的一些基本特性.设计原则,以

面向对象编程思想的哲学起源(转载)

http://www.xuebuyuan.com/566309.html 本来想象着写一整篇「面向对象编程思想的哲学起源」这样的题目,笔走纸上,方才发现这样的题目足够出本书,知识不够,写不动.但心里还是想写点自己的所思所想. 全篇就拿JAVA来举例了.众所周知,面向对象的四大基本要素:抽象(Abstract).封装(Encapsulation).继承(Inheritance).多态(Polymorphism). 很多人坚持<逻辑学>是唯物哲学的基础,不懂,姑且不论.哲学就是对自然学科的抽象,看

面向对象编程思想(OOP)

本文我将从面向对象编程思想是如何解决软件开发中各种疑难问题的角度,来讲述我们面向对象编程思想的理解,梳理面向对象四大基本特性.七大设计原则和23种设计模式之间的关系. 软件开发中疑难问题: 软件复杂庞大 很多软件进入维护阶段 需求的不断变更 软件开发中存在很多其他的问题,上面只是从程序开发和设计的角度看到的部分问题.需求解决上面软件开发中的问题,就要求我们编写(设计)的软件具有很好的可读性.可维护性和可扩展性.我们需要保证代码具有高内聚低耦合. 下面将简单介绍面向对象的一些基本特性.设计原则,以

面向对象编程思想(前传)--你必须知道的javascript(转载)

原文地址:http://www.cnblogs.com/zhaopei/p/6623460.html阅读目录 什么是鸭子类型 javascript的面向对象 封装 继承 多态 原型 this指向 call apply band js中的闭包 什么是高阶函数 在写面向对象编程思想-设计模式中的js部分的时候发现很多基础知识不了解的话,是很难真正理解和读懂js面向对象的代码.为此,在这里先快速补上.然后继续我们的面向对象编程思想-设计模式. 什么是鸭子类型 javascript是一门典型的动态类型语

面向对象编程思想 - 月亮晶石的日志 - 网易博客

面向对象是一种新兴的程序设计方法,或者说它是一种新的程序设计范型,其基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计. 它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的其它概念来构造系统).这可以使系统直接地映射问题域,保

[Javascript] 面向对象编程思想

1.创建对象 1.1 new 用new进行创建对象: var user = new Object(); user.age = 12;//同时为对象添加属性 user.name = 'ajun'; 1.2{} 用{}创建对象,如: var user = { 'name':'ajun, 'age':12 } 这里同时候为user添加了两个属性分别为:name,age 在以上代码稍加改造,你还可以为一个对象添加一个方法,如: var user = { 'name':'ajun', 'age':12 '

第三章面向对象编程思想

""" 编码规范: 类名首字母应以大写字母开头 类的成员/属性: 成员属性 实例化对象的属性: self.name=name 可以被访问,也可以在类的外部被修改 私有属性 实例化对象的私有属性: self.__age=age 属性名前加两下划线 外部无法被访问, 也不能被修改,只能内部访问和修改 想要在外部访问只能自定义一个方法了 强制访问 私有属性: p._People__age 对象名._类名__私有属性 公共属性: 类的属性,也叫静态属性,他是在类的内部定义的 clas

面向对象编程思想(OOP)(转发)

本文我将从面向对象编程思想是如何解决软件开发中各种疑难问题的角度,来讲述我们面向对象编程思想的理解,梳理面向对象四大基本特性.七大设计原则和23种设计模式之间的关系. 软件开发中疑难问题: 软件复杂庞大 很多软件进入维护阶段 需求的不断变更 软件开发中存在很多其他的问题,上面只是从程序开发和设计的角度看到的部分问题.需求解决上面软件开发中的问题,就要求我们编写(设计)的软件具有很好的可读性.可维护性和可扩展性.我们需要保证代码具有高内聚低耦合. 下面将简单介绍面向对象的一些基本特性.设计原则,以

面向对象编程思想2s

面向对象编程思想 抽象 封装和数据隐藏 多态 继承 代码的可复用性 面向对象分析 五个层次.五个活动组成 目的 1.获得系统的对象个体.个体内部的状态.个体与个体间的交互 活动 1.建模系统功能 2.发现并且确定业务对象 3.组织对象并确定其关系 抽象 舍弃个别的.非本质的特征,抽取共同的.本质的特征 ss 原文地址:https://www.cnblogs.com/cnblogzaizai/p/12028791.html