클래스와 인스턴스


앞에서 클래스사용 법에 대해 간략하게 설명 드렸는데 개념이 없이 바로 예제로 설명해 어려움이 있을 것 같아

개념 설명을 추가 하도록 하겠습니다.


다들 어린 시절 학교 앞에서 뽑기를 해본 적이 있을 것이다. 

뽑기를 할때 국자에 소다와 설탕을 넣고 끓인 후 ☆ ♡ 등 모양의 틀로 찍고 그 모양대로 잘라먹은 기억을 다들 가지고 있을 것이다.


여기서 틀은 클래스라 생각 하자 틀을 찍어서 계속 뽑기를 여러개 만들 수 있는데 여기서 뽑기는 인스턴스라고 생각해보자

한개의 틀만 있으면 똑같은 뽑기를 계속 만들 수 있다. 


아래 코드를 보자


 #아래는 틀과 같은 역활을 하는 클래스 선언이다.

 class Human :
         name = ""


 h1 = Human() #Human 이라는 클래스(틀)로 h1 인스턴스(뽑기)를 만든다.

 h2 = Human() #Human 이라는 클래스(틀)로 h2 인스턴스(뽑기)를 만든다.



클래스 변수와 함수


클래스 변수와 함수 사용법에 대해 알아 보겠다.


아래 Human 클래스에 이름 변수를 확인 할 수 있다.

사용 방법은 Class 밑에 들여쓰기 후 변수를 정의 하면 된다.


인스턴스 생성 후에는 인스턴스명.변수명을 사용 하면 된다. 


 class Human :

         name = ""


 h1 = Human() 

 h1.name = "철수"


함수 역시 클래스 밑에 들여쓰기 후 함수를 정의하면 된다.

인스턴스 생성 후에는 인스턴스명.함수명을 사용 하면 된다. 


 class Human :

         name = ""

         def introduce(self) :

             print "내 이름은 %s 입니다."%self.name


 h1 = Human() 

 h1.name = "철수"

 h1.introduce()




생성자 함수(__init__) 선언


앞에서 인스턴스 호출 후 다음에 인스턴스의 이름을 넣었다.


 h1 = Human() 

 h1.name = "철수"


매번 인스턴스를 생성하고 이름을 넣어주는 일이 번거로울 것이다.

그래서 인스턴스를 생성과 동시에 인스턴스를 초기화 시켜주는것이 생성자 함수(__init__) 이다.


 class Human :

         name = ""

         def __init__(self,name):

             self.name = name

         def introduce(self) :

             print "내 이름은 %s 입니다."%self.name


 h1 = Human("철수") 

 h1.introduce()



이전 클래스 설명 가기 ====> click

반응형

'프로그램 > Python' 카테고리의 다른 글

[Python] 모듈 #2  (0) 2016.11.13
[Python] 모듈 #1  (0) 2016.11.12
[Python]클래스 (2)  (0) 2016.09.16
[Python]클래스 (1)  (0) 2016.09.16
[Python]파일(File) 사용법  (0) 2016.09.16

C 변수의 정의



변수란 어떤 값을 담는 그릇이라 생각 하면 됩니다.

값의 변화가 가능하며 숫자, 문자열, 포인트 등등 다양한 종류가 있습니다.





데이터 형의 종류



변수에는 다양한 데이터 종류가 있습니다.

예를 들어 숫자형에는 int, double, float이 있으며 해당 데이터 형에는 문자열 입력이 안됩니다.


 데이터형의 종류

 

  

  • int : 정수형 ( 2,147,483,648 ~ 2,147,483,647 )

  • char : 문자형 ( -128 ~ 127 )

  • float : 부동호 소수점 

  • double : 실수형




변수 사용 예제



 int main(int argc, char** argv) 


 {


int sum = 0 ;



int a = 10 ;



int b = 20 ;


sum = a + b ;


printf("%d + %d = %d", a, b, sum);


return 0;

 } 



반응형

'프로그램 > C' 카테고리의 다른 글

[C] 연산자  (0) 2017.03.07
[C] 함수  (0) 2017.03.05
[C] 주석 사용법  (0) 2016.11.23
[C] C 시작 ( Console 출력 )  (0) 2016.08.26
[C] 무료 개발 툴 Dev-C++ 설치  (0) 2016.08.24

파이썬 클래스 사용법 #2



다시 클래스에 대해 이어서 설명 해 보겠다. 


원래 난해하고 쉽지 않은 내용이니 좌절하지 말고 끝까지 보길 바랍니다.


자 다른 예로 설명해 보겠다.


음료 자판기를 예를 들어 설명해 보겠다.


간단하게 돈 넣으면 음료수 2개중 한개를 선택해 음료수가 나오게 하겠다.


==========================================================

#!/usr/bin/python

# -*- coding: utf-8 -*-


total_money = 10

product = '음료1','음료2'

price = 2, 3


in_money = input("돈을 넣어주세요(2~3)")

sel_drink = input("음료를 선택해 주세요(1~2)")


if sel_drink == 1 and in_money >= 2:

    print"%s 나왔습니다."%product[0]

    total_money = total_money + 2

elif sel_drink == 2 and in_money >= 3 :

    print"%s 나왔습니다." % product[1]

    total_money = total_money + 3


print"자판기에 %d원 있습니다."%total_money

==========================================================

결과 :  

돈을 넣어주세요(2~3)3

음료를 선택해 주세요(1~2)1

음료1 나왔습니다.

자판기에 12원 있습니다.

==========================================================


이제 여기서 거스름 돈도 주는 기능을 넣고 싶고 음료수도 더 추가 하고 싶다.


어떻게 되겠는가.. 프로그램 전반적으로 다시 다 수정 해야 된다.


하지만 다음과 같이 위의 기능을 클래스로 만들어 뒀으면


==========================================================

#!/usr/bin/python

# -*- coding: utf-8 -*-


class vend_machine :

    total_money = 10

    in_money = 0

    sel = 0

    product = '음료1', '음료2'

    price = 2, 3


    def input_money(self):

        self.in_money = input('돈을 넣어주세요')


    def get_drink(self):

        sel = input('음료수를 선택해주세요')

        if sel == 1 and self.in_money >= 2:

            print"%s 나왔습니다." % self.product[0]

            self.total_money = self.total_money + 2

        elif sel == 2 and self.in_money >= 3:

            print"%s 나왔습니다." % self.product[1]

            self.total_money = self.total_money + 3

        print"자판기에 %d원 있습니다." % self.total_money



vm = vend_machine()

vm.input_money()

vm.get_drink()

==========================================================

결과 :  

돈을 넣어주세요3

음료수를 선택해주세요1

음료1 나왔습니다.

자판기에 12원 있습니다.

==========================================================


클래스 부분만 수정 하고 


클래스를 사용하는 부분 

   vm = vend_machine()

   vm.input_money()

   vm.get_drink()

)


은 변경 할 필요가 없이 수정이 가능하다. 


다음은 음료수를 추가해 보고 거스름돈도도 나오게 해보자


==========================================================

#!/usr/bin/python

# -*- coding: utf-8 -*-


class vend_machine :

    total_money = 10

    in_money = 0

    sel = 0

    product = '음료1', '음료2', '음료3'

    price = 2,3,4


    def input_money(self):

        self.in_money = input('돈을 넣어주세요')


    def get_drink(self):

        sel = input('음료수를 선택해주세요')

        if sel == 1 and self.in_money >= 2:

            print"%s 나왔습니다." % self.product[0]

            self.total_money = self.total_money + 2

            self.in_money = self.in_money - 2

        elif sel == 2 and self.in_money >= 3:

            print"%s 나왔습니다." % self.product[1]

            self.total_money = self.total_money + 3

            self.in_money = self.in_money - 3

        print"자판기에 %d원 있습니다." % self.total_money

        print"거스름돈 %d원 있습니다." % self.in_money

        self.in_money = 0


vm = vend_machine()

vm.input_money()

vm.get_drink()

==========================================================

결과 :  

돈을 넣어주세요5

음료수를 선택해주세요1

음료1 나왔습니다.

자판기에 12원 있습니다.

거스름돈 3원 있습니다.

==========================================================


클래스만 수정 하였고 클래스를 사용하는 부분은 전혀 수정을 가하지 않았다.


또한 이렇게 클래스를 만들어 두면 다른 프로그램에서 사용 할 수 있다.


이것을 프로그램의 재 사용성이라고 하며 


재 사용성을 높여 프로그램의 생산성, 유지보수성을 향상 시킬수 있다.


 

이전 클래스 설명 가기 ====> click

다음 클래스 설명 가기 ====> click




반응형

'프로그램 > Python' 카테고리의 다른 글

[Python] 모듈 #1  (0) 2016.11.12
[Python]클래스(3)  (0) 2016.11.02
[Python]클래스 (1)  (0) 2016.09.16
[Python]파일(File) 사용법  (0) 2016.09.16
[Python]사용자 입력  (0) 2016.09.16

파이썬 클래스 사용법



클래스에 대해 알아보겠다.


클래스는 무엇인가 DATA + 함수 즉 자료와 행동 두 가지를 모두 묶어서 관리 할 수 있는 사용자 자료 형이다.


간단한 예를 통해 이해를 도와 보자


더하기 예제

==========================================================

#!/usr/bin/python

# -*- coding: utf-8 -*-

a = 1

b = 2

sum = a + b

print sum

==========================================================

결과 :  

3

==========================================================


더하기 하는 예제 이다 여기서 1,2 말고 다른 값도 더하고 싶다 그럼 어떻게 하나


==========================================================

#!/usr/bin/python

# -*- coding: utf-8 -*-

a = 1

b = 2

c = 3

d = 4

e = 5

f = 6

sum = a + b

print sum

sum = c + d

print sum

sum = e + f

print sum

==========================================================

결과 :  

3

7

11

==========================================================


이렇게 변수를 늘리고 연산 작업을 계속 늘여 써야 가능 할텐데 우린 함수라는 것을 배웠으니


다음과 같이 처리가 가능 할 것이다.


==========================================================

#!/usr/bin/python

# -*- coding: utf-8 -*-


def sum(a, b) :

    print a+b


sum(1,2)

sum(3,4)

sum(5,6)

==========================================================

결과 :  

3

7

11

==========================================================


연산 작업은 함수로 만들어서 처리가 가능 하다 하지만


더한 값을 또 더하고 싶다면 어떻게 하나?? 함수를 수정해 더한 값을 저장 하게 끔 해야 한다.


==========================================================

#!/usr/bin/python

# -*- coding: utf-8 -*-


def sum(a, b) :

    retval = a + b

    print retval

    return retval


a = sum(1,2)

b = sum(a,1)

c = sum(a,b)

==========================================================

결과 :  

3

4

7

==========================================================


위와 같이 값이 관리 될 수 있도록 하면서 함수를 사용하고 싶을 때는 클래스를 사용한다.


==========================================================

#!/usr/bin/python

# -*- coding: utf-8 -*-


class calc :

    lastValue = 0


    def sum(self,a ):

        self.lastValue = self.lastValue + a

        print self.lastValue


c = calc()

c.sum(1)

c.sum(2)

c.sum(5)

==========================================================

결과 :  

1

3

8

==========================================================


위와 같이 클래스만 관리하면 따로 함수도 만들 필요도 없고 변수도 클래스 안에서 모두 관리 가능하다.


다음 클래스 설명 가기 ====> click

반응형

'프로그램 > Python' 카테고리의 다른 글

[Python]클래스(3)  (0) 2016.11.02
[Python]클래스 (2)  (0) 2016.09.16
[Python]파일(File) 사용법  (0) 2016.09.16
[Python]사용자 입력  (0) 2016.09.16
[Python] 함수 (3)  (0) 2016.09.16

+ Recent posts