Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- Data Structure
- REP
- 정규표현식
- 함수
- Crawling
- vector 비교
- 데이터 타입
- length
- ROTTEN TOMATOES
- scraping
- 스크래핑
- 데이터 입출력
- data frame
- vector 연산
- 변수 선언
- c()
- stringr
- R 개요
- factor
- 데이터 타입의 우선순위
- 문자열처리
- R 기초
- :
- Names
- 연습문제
- seq
- CSV
- 네이버 영화 댓글
- working directory
- TXT
Archives
- Today
- Total
study blog
객체지향 프로그래밍(Object Oriented Programming) 본문
# 함수 기반의 프로그래밍(절차적 프로그래밍)을 하면 좋음!
- 꽤 예전(1970년부터 지금까지 이 방식으로 프로그래밍을 하고 있음)
- 장점: 프로그래밍이 쉬움 → 빨리 만들 수 있다 / 비용이 적게 듦
- 단점: 처음에는 단점 별로 없어보임
# 1990년대 들어오면서 인터넷의 보급 → 정보량 증가 → 세상이 급변
- 프로그램의 유지보수 요구가 많아지기 시작
- 절차적 프로그램으로 작성해서 이런 문제가 발생
- 어떤 방식으로 프로그램을 만들면 유지보수측면에서 이점이 있을까?
- 객체지향 paradigm이 시작
# 객체지향이 어떤 프로그래밍 방식인지를 인지하기
- 현실세계에 잘 부합하는 (변화에 잘 적응하는) 프로그램을 만들기 위해
- 해결해야 하는 문제(현실세계 문제)를 프로그램으로 똑같이 모델링하자고 생각.
# 은행프로그램
- 은행프로그램을 구성하는 구성요소를 파악
ex) 텔러, 고객, 은행계좌, 지점, 테이블, ... → 분석하는 사람마다 다름 !
- class는 구성요소간의 행위들을 정의하는 프로그래밍 방식
- 은행계좌(객체)를 예로 프로그램으로 표현 (객체 모델링)
# 객체들은 크게 2가지로 파악할 수 있음 : 상태, 행위
- 상태: 값으로 표현되는 것
- 행위: 동작으로 표현되는 것
- 은행 계좌가 가지고 있는 값(상태) - 잔액, 예금주, 계좌번호
- 동작(행위) - 입금, 출금, 조회
→ abstraction(추상화)
# class 구현해보자.
# class : 객체 모델링의 수단. 우리가 만든 데이터 타입(추상 데이터 타입).
# 클래스 이름은 대문자로 시작(관용적)
class Student:
# 1. properties (변수로 표현)
# 상태(값) : 이름, 학과, 학년, 학번, 성별, (나이, 키, 몸무게 ...)->상태로 간주할 수는 있으나 학생에 부합하다기엔 애매...
# class variable의 특징: 모든 객체가 공유하는 변수 -> 이름은 공유하는 변수 아니므로 적절치 못함.
# 국적 등 모든 학생이 공유하는 변수로 설정해줘야 함
s_nation = "" # class variable -> 모든 학생이 이 국적을 공유
# 2. constructor (생성자)
def __init__(self,n): # 생성자는 반드시 이 이름을 사용해야 함!
# self라는 키워드는 처음에 반드시 와야 함!
# 이 생성자는 인자를 1개 받는 함수
self.s_name = n # instance variable (객체가 독립적으로 가지고 있는 변수)
self.s_num = "" # instance variable (객체가 독립적으로 가지고 있는 변수)
self.s_major = []
#Student.s_nation = n # s_nation쓰려면 지역변수이므로 Student 해줌
# 3. method ( 함수로 표현 (함수는 아님) )
# 행위(동작)
def display(self): # def가 class 안에 있는 것! # display: 학생정보를 출력하는 행위
print("학생 이름은 : {}".format(self.s_name))
# def display(self) 하면 해당 클래스가 가지는 일반적인 instance가 된다.
t = Student("홍길동") # t라는 객체 생성 ( 저장공간 ) -> 객체 만들 때 생성자가 자동으로 호출됨
# class 호출 -> 공간이 만들어짐 -> 이 만들어진 메모리 공간을 instance라고 한다.
# 저장공간(instance)-> '객체'라는 표현으로 지칭
# 클래스 내부에 정의된 생성자라고 불리는 함수가 호출됨
print(t.s_name) #홍길동
# t.display() # 학생 이름은 : 홍길동
k = Student("김연아") # 또다른 객체 생성 -> 학생이 2명 된 것
print(k.s_name) #김연아
Student.s_nation = "한국"
print(t.s_nation) # 한국 # -> 모든 학생의 국적 다 한국
print(k.s_nation) # 한국
students = list()
students.append(Student("홍길동") )
print(students[0].s_name)
Comments