1. 클래스 객체를 만들때 __init__ 인스턴스를 초기화해야한다.
def __init__(self):
self.switchIsOn = False
1-1. 매개변수 self는 클래스 객체 스코프에 속한 모든 메서드에 접근이 가능하다 그리고 모든 객체 메서는 반드시 매개변수 self가 있어야한다.
class LightSwitch():
# 클래스 객체를 만들때 인스턴스를 초기화해야한다.
# 매개변수 self는 클래스 객체 스코프에 속한 모든 메서드에 접근이 가능
def __init__(self):
self.switchIsOn = False
def turnOn(self):
self.switchIsOn = True
def turnOff(self):
self.switchIsOn = False
# turn on,off에 따라 True가 나올수 있고 False가 나올 수 있다.
# 결과값을 출력해준다.
def show(self):
print(self.switchIsOn)
oLightSwitch = LightSwitch()
oLightSwitch.show() #false
oLightSwitch.turnOn()
oLightSwitch.show() #true
oLightSwitch.turnOff()
oLightSwitch.show() #false
oLightSwitch.turnOn()
oLightSwitch.show() #true
2. 응용예제
토글기능을 이용하여 일일이 self.isOn 값을 True ,False로 설정하지 않아도 된다. 토글 함수가 호출할때마다 상태가 변화한다.
2-1. 텔레비전 기능들 명세화
2-1-1. 전원을 켜고 끄는 기능(토글기능)
2-1-2. 볼륨을 높이거나 낮추는 기능
2-1-3. 채널번호를 변경하는 기능
2-1-4. 음소거를 활성화하거나 비활성화하는 기능
2-1-5. 현재 설정의 정보를 조회하는 기능
2-1-6. 특정채널로 이동하는 기능
class TV():
def __init__(self):
self.isOn = False
self.isMuted = False
self.isMuted = False
self.channelList = [2, 4, 5, 7, 9, 11, 20, 36, 44, 54, 65]
self.nChannels = len(self.channelList) #리스트 크기
self.channelIndex = 0
self.VOLUME_MINIMUM = 0
self.VOLUME_MAXIMUM = 10
self.volume = self.VOLUME_MAXIMUM // 2 # 나누기한 몫을 볼룸값으로 지정
def power(self):
self.isOn = not self.isOn # 값을 뒤집는 토글 기능(키고켜는)
def volumeUp(self):
if not self.isOn:
return # 소리 On
# 음소거가 활성화되어있을때 볼륨을 조절하면 음소거 비활성화
if self.isMuted:
self.isMuted = False
if self.volume < self.VOLUME_MAXIMUM:
self.volume = self.volume + 1
def volumeDown(self):
if not self.isOn:
return # 소리 On
# 음소거 비활성화
if self.isMuted:
self.isMuted = False
if self.volume > self.VOLUME_MINIMUM:
self.volume = self.volume - 1
def channelUp(self):
if not self.isOn:
return # 채널On
self.channelIndex = self.channelIndex + 1
if self.channelIndex > self.nChannels:
#마지막 채널에서 채널을 증가하면 인덱스값이 0이되어서 다시 처음으로 채널로돌아온다
self.channelIndex = 0
def channelDown(self):
if not self.isOn:
return # 채널On
self.channelIndex = self.channelIndex - 1
#첫번째 채널에서 채널을 감소하면 다시마지막 채널로 돌아온다.
if self.channelIndex < 0:
self.channelIndex = self.nChannels - 1
def mute(self):
if not self.isOn:
return #음소거 On
self.isMuted = not self.isMuted
def setChannel(self, newChannel):
#만약에 채널리스트 해당하는 채널번호가 존재하지 않으면
#새로운 채널번호를 새로운 인데스 번호로 생성해준다
if newChannel in self.channelList:
self.channelIndex = self.channelList.index(newChannel)
def showInfo(self):
print()
print("TV 상태:")
if self.isOn:
print("tv전원상태: 켜짐")
print("선택된 채널번호:", self.channelList[self.channelIndex])
if self.isMuted:
print("볼륨 크기:", self.volume, "(음소거 활성화)")
else:
print("볼륨 크기:", self.volume)
else:
print("tv전원상태: 꺼짐")
oTV = TV()
#Tv 토클 스위치를 켜고 상태 출력
oTV.power()
oTV.showInfo()
oTV.channelUp()
oTV.channelUp()
oTV.channelUp()
oTV.volumeUp()
oTV.volumeUp()
oTV.showInfo()
oTV.volumeDown()
oTV.mute() #음소거 활성화
oTV.showInfo()
#메소드를 호출하여 11의 인자값을 전달한다
#채널11번로 변경
oTV.setChannel(11)
#음소거활성화 상태에서 볼륨을 조절하면 음소거가 비활성화된다.
oTV.mute()
oTV.showInfo()
https://www.yes24.com/Product/Goods/122575344
'OOP' 카테고리의 다른 글
헤드퍼스트 디자인패턴 - Facade 패턴 (0) | 2024.05.05 |
---|---|
헤드퍼스트 디자인패턴 - 커맨드패턴 (0) | 2024.05.04 |
인터페이스 설계도 (0) | 2024.02.01 |
다형성 (0) | 2024.02.01 |
PHP 객체의 속성에 객체 저장 (0) | 2024.01.30 |