티스토리 뷰





▶절차적 프로그래밍


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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함