티스토리 뷰
▶절차적 프로그래밍
1. 문제해결을 위한 프로그래밍이 절차에 따라서 수 행되는 방
2. 해결을 위한 데이터가 순서대로 가공되어 최종적으 로 완성되는 형태
3. 간단한 알고리즘이나, 문제해결을 위한 방법. 복잡 한 작업에서는 사용하기 힘듬.
▶구조적 프로그래밍
1. 프로그램을 함수(function) 단위로 나누고, 함수를 호출하는 식의 프로그래밍
2. 전체 프로그램을 이해하기 쉬운 하부 구조(함수, 프로시저, 메서드, 블록 등) 으로 나누어서 처리
3. 큰 문제를 해결하기 위하여 작은 문제 단위로 나누어서 해결
사용 언어 : 파스칼 , C 언어 등이 사용
2. 객체 지향 프로그래밍
1. 실 세계의 사물을 객체(Object) 로 추상화 하여, 객체 간의 상호 작용을 기반으로 프로그래밍 하는 방법
2. 문제를 해결하기 위하여, 우선 각 기능 별로 객체를 생성한 후, 그 객체들을 조합함으로써 최종적으로 해결
3. 기능으로 분리된 각 객체들은 차후 사용이 용이
4. 현대의 GUI 환경 등에서 사용되는 이벤트 기반의 동작 구현에 용이
2-1. 객체(Object)
1. Object 는 자신의 데이터를 가지고 있으며, 실행 가능한 기능 (Function)을 가지고 있음
2. Object 는 상속으로 기능을 확장 할 수 있음
3. 외부에서 의도하지 않은 내부 데이터 변경을 막기 위하여 캡 슐화를 할 수 있음
4. Object 의 기능은 재 정의( Override) 할 수 있음
▷객체는 클래스에 의해서 만들어짐
▷1개의 클래스는 무수히 많은 객체를 만들어냄
▷기본구조
▷파이썬 클래스의 가장 간단한 예
→ 아무런 기능도 가지고 있지 않은 클래스이지만 객체를 생성하는 기능은 가지고 있음
▷Programmer 클래스의 객체 만드는 방법
→ kim 과 park 이 객체 (함수를 사용해서 결과값을 돌려받는 것과 비슷)
▷ 클래스에 의해서 만들어진 객체 -->인스턴스 (instance)
→선언된 class를 실제로 사용하기 위해서는 instance화 해야 함
※ 객체와 인스턴스의 차이
→ 특정 객체가 어떤 클라스의 객체인지를 관계 위주로 설명할 때 사용
ex) kim=Programmer() 에서 kim : 객체
kim객체 : Programmer의 인스턴스
-->kim은 객체
-->kim은 Programmer의 객체
-->kim은 Programmer의 인스턴스
--------예제
>>> class BusinessCard:
pass
>>>
>>> type(BusinessCard)
<class 'type'>
>>> card = BusinessCard()
>>> type(card)
<class '__main__.BusinessCard'> >>>
----------
3-1. class 변수
▶객체간 서로 공유되는 변수
-->클래스에 의해 생성되는 객체들이 공통적으로 사용할 목적으로 쓰임
-->이상적인 형태의 클래스를 실체화 시킴
-----클래스변수 예제
class service :
secret="영수의 배꼽이 두개다" --service의 정보
pay=service()
pay.secret -- pay라는 객체생성
print(pay.secret)
===== RESTART: C:/Users/해니/AppData/Local/Programs/Python/Python36/ea.py =====
영수의 배꼽이 두개다
---------------
▶클래스 변수는 공유되는 변수 이므로 변경하면 출력되는 값도 변경된다
class service :
secret="영수의 배꼽이 두개다"
pay=service()
pay.secret="배꼽없다" -- 변경된 값
pay.secret
print(pay.secret)
===== RESTART: C:/Users/해니/AppData/Local/Programs/Python/Python36/ea.py =====
배꼽없다
>>>
▷클래스를 통한 접근 가능
>>> class service :
secret="영수의 배꼭이 두개다"
>>> service.secret
'영수의 배꼭이 두개다'
>>>
3-1. 인스턴스 변수--self
▶생성된 인스턴스에 포함되기 때문에 인스턴스 내용을 따로 저장
▷self.변수명 으로 접근
--예제
class Service:
secret = "영구는 배꼽이 두 개다"
def setname(self, name):
self.name = name
def sum(self, a, b):
result = a + b
print("%s님 %s + %s = %s입니다." % (self.name, a, b, result))
pay=service() -- 클래스변수설정
pay.setname("홍길동")--인스턴스 변수
pay.sum(2,4)-- 인스턴스 변수
===== RESTART: C:/Users/해니/AppData/Local/Programs/Python/Python36/ea.py =====
홍길동님2+4=6이다
>>>
----(1)
class Family:
family_name=""
def set_family_name(self, name):
Family.set_family_name=name
def set_name(self,name) :
self.name=name
def print_full_name(self):
print(Family.set_family_name,self.name)
yongsu=Family()
yongsu.set_family_name("Cho")
yongsu.set_name("yongsu")
yongsu.print_full_name()
===== RESTART: C:/Users/해니/AppData/Local/Programs/Python/Python36/ea.py =====
Cho yongsu
>>>
---> 다른 변수 추가
같은 Family 클라스 함수 사용됨
gildong = Family()
gildong.set_name("Gil dong")
gildong.print_full_name()
===== RESTART: C:/Users/해니/AppData/Local/Programs/Python/Python36/ea.py =====
Cho yongsu
Cho Gil dong
>>>
--->클래스 Family값을 변수에서 바꾸어 주었을 때
yongsu=Family()(#yongsu.set_family_name("Cho"))-삭제
yongsu.set_name("yongsu")
yongsu.print_full_name()
gildong = Family()
gildong.set_name("Gil dong")
gildong.print_full_name()
yongsu.set_family_name("Lee")--set_family_name을 바꿔주었을 떄
yongsu.print_full_name()
gildong.print_full_name()
===== RESTART: C:/Users/해니/AppData/Local/Programs/Python/Python36/ea.py =====
<function Family.set_family_name at 0x000002B4A32E3F28> yongsu
<function Family.set_family_name at 0x000002B4A32E3F28> Gil dong
Lee yongsu
Lee Gil dong
>>> set_family_name이 바뀌어서 나옴
3-3. class 의 Method(메서드)
▶class 내에서 동작을 수행하는 Function
class Cat:
def set_Info(self, name, eye_color, color):
self.name = name
self.eye_color = eye_color
self.color = color
myCat = Cat()
myCat.set_info("cat","Brown","Black")
print("MyCat : ", myCat.name, " Eye:", myCat.eye_color, " Color:", myCat.color)
===== RESTART: C:/Users/해니/AppData/Local/Programs/Python/Python36/ea.py =====
mycat: cat color: Brown eye_color: Black
>>>
▶class의 메서드에서 첫번째 인자는 self 이어야 함
→self 는 class 가 인스턴스 생성시 해당 인스턴스에 메서드나 변수가 포함된다는 의미
def speaking(self):
print("Melong")
def speaking2(): -- self 없으면 호출할수가없음
print("Melong") --self 가없기 때문에 class함수로 접근해야만 가능
myCat.speaking()
Cat.speaking2() #class로 접근해야 출력됨
→class 메소드 호출시 self.메소드 이름 으로 호출
class Add_Class:
def add(self, a, b):
sum = a + b
return sum
def add2(a, b):
sum = self.add(a,b)
return sum
testAdd = Add_Class()
print("Add:", testAdd.add(2,4))
print("Add:", testAdd.add2(2,4))
-----완성된 소스
class Cat :
def set_info(self,name,eye_color,color):
self.name = name
self.eye_color = eye_color
self.color=color
def speaking(self):
print("Melong")
def speaking2(): # self 없으면 호출할수가없음
print("Melong")
def add(self, a, b):
sum = a+b -- 함수안에서만 저장되고 사라짐
return sum -- return으로 합을 가지고옴
* 다른방법
(def add(self, a, b):
self.sum = a+b --class메소드호출
return self.sum)
def get_name(self): -함수를 만들어서 꺼내서 주는 식으로 많이 씀
return self.name
myCat = Cat()
myCat.set_info("Young","Blown","Black")
print("MyCat:",myCat.name,"Eye :", myCat.eye_color,"color:",myCat.color)
myCat.speaking()
Cat.speaking2() -- self가 없어서 class함수로 불러주어야함
*다른방법
(print("sum:",myCat.add(10,5), myCat.sum))
print("sum:",myCat.add(10,5))
===== RESTART: C:/Users/해니/AppData/Local/Programs/Python/Python36/ea.py =====
mycat: cat color: Brown eye_color: Black
Melong
Melong
sum: 15
>>>
☆class 연습
☆풀이
class Calc :
def setAandB(self, a, b):
self.a=a
self.b=b
def add(self) :
return self.a+self.b
def mul(self) :
return self.a*self.b
def minus(self) :
return self.a-self.b
def div(self):
return self.a/self.b
myCal =Calc()
myCal.setAandB(10,3)
print(myCal.add())
print(myCal.mul())
print(myCal.minus())
print(myCal.div())
참고
점프투파이썬
수업내용 ppt
'Programing > Python' 카테고리의 다른 글
Python - 12. Module.Package (0) | 2017.03.30 |
---|---|
Python - 11. class 활용 (0) | 2017.03.28 |
Python 실습 (0) | 2017.03.25 |
Python - 09. 입력/출력 (0) | 2017.03.22 |
Python - 08. 함수 (0) | 2017.03.22 |