iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
1
Software Development

軟體工程x管理學系列 第 2

Day 2 我腦中軟體工程的長相

  • 分享至 

  • xImage
  •  

台嘎吼,在下小笠宏樹是也。
來到了Day 2,為了能讓大家更帶入情境,需要先讓大家理解小弟淺薄的軟體工程知識。
首先需要說明的是我是一位Android軟體工程師,因此我通常會用OOP去理解程式,當然我也有跟上最潮的Kotlin,和看過Rx系列文章,所以對於functional programing和ReactiveX大概就一知半解的程度。
接下來為了讓大家都能簡單理解OOP是什麼,接下來會為大家獻上簡單的OOP基礎知識。

OOP

Class and Object

在OOP中你可以說所有的東西都是由Class組成的,通常大家最喜歡舉的?是狗的例子。

class Dog() {
	private val color: Int = 0XFFFFFF

	fun wolf() = “ㄨㄤˋ”

	fun setColor(newColor: Int) {
		color = newColor
	}
}

如果你需要使用這個Class那就必須創建一個起來用

val coki = Dog()
print(coki.wolf())

Console:
ㄨㄤˋ

PS: coki = 柯基

封裝性

意思就是Class裡面會分成可以讓外部看得到的東西和不讓外部看到的東西,通常會用public和private表示,正常來說我們會期待一個Class只開放最少的部分給外部知道。

繼承

為了減少程式的重複性,我們會將相似的Class持有一個共同的Parent用以避免一直做重複的邏輯或是少寫得需要的條件,一樣以狗的例子繼續。
原本

class Dog() {
	private val color: Int = 0XFFFFFF

	fun wolf() = “ㄨㄤˋ”

	fun setColor(newColor: Int) {
		color = newColor
	}
}

class Cat() {
	private val color: Int = 0X000000

	fun wolf() = “ㄇㄧㄠ”

	fun setColor(newColor: Int) {
		color = newColor
	}
}

當我們有了這兩個Class
我們可以將其變成這樣

// Parent Class
open class Pet() {
	protected open val color: Int = 0X000000

	open fun wolf() = “就跟你說過放手,不要,再聽,你的藉口”

	fun setColor(newColor: Int) {
		color = newColor
	}
}

// Child Class
class Dog(): Pet() {
	override val color: Int = 0XFFFFFF

	override fun wolf() = “ㄨㄤˋ”
}

// Child Class
class Cat(): Pet() {
	override val color: Int = 0X000000

	override fun wolf() = “ㄇㄧㄠ”
}

多型

這個意思是你可以做出interface讓各自的Class實作所需要的行為
比如:
有一個interface是

interface CanWolf {
	fun wolf() : String
}

所有用到這個CanWolf的Class都必須實作“wolf()”這個function,而其他人也可以用“CanWolf”這個概念來使用這些Class。

抽象性

當我們要產生Parent Class的時候,通常的選擇會是更加抽象的或更加General的東西來當大家的Parent,畢竟Parent的角色是要能代表所有Child。

以上就是OOP的簡單解釋哩~
如果有任何疏漏還麻煩各位看官給意見了


下一篇我要來抖抖的解說一下什麼是管理學惹,希望別摔倒,也歡迎各位看官給任何意見~


上一篇
Day 1 管理學 cover by 軟體工程
下一篇
Day 3 我腦中的管理學的樣子
系列文
軟體工程x管理學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
scertgogo
iT邦新手 5 級 ‧ 2020-09-17 11:21:18

這主題太特別了!!期待後續!!

我要留言

立即登入留言