객체지향에서 객체(Object)란 무엇인가?
- 객체는 어떤 속성(attributes)이나 값(Value), 함수(methods)를 가진 데이터이다.
- 객체는 모든 클래스의 베이스 클래스이다.
코드로 쉽게 이해하자면
class Obclass:
attribute = value
def method():
pass
이런식으로 구성되어있다.
그렇다면 클래스에 대해 알아보자.
클래스(class)
객체 단위로 프로그래밍한다는 것은 구체적으로 어떻게 하는 것인가?
위 내용에서 객체를 정의할 때, 객체는 모든 클래스의 베이스 클래스라고 했다.
객체는 이미 선언된 클래스를 기반으로 만들어진다는 말이다.
예를들어
class1(attributes, value, method)
class2(attributes, value, method)
...
class10(attributes, value, method)
이런식으로 하나의 클래스로 다른 여러개의 객체를 생성할 수 있다.
그래서 프로그래밍 할때 이렇게 만들어진것들을
클래스 기반으로 만들어진 오브젝트(object) or 인스턴스(instance) 라고 한다.
클래스(class)와 인스턴스(instance)는 어떻게 만드는가?
코드로 쉽게 틀을 잡아보면 아래와 같이 이해할 수 있다.
class PersonalInfo: # 클래스 이름의 첫글자는 대문자로 시작
# class attribute (클래스 속성)
nationality = "Korean"
# Initalizer, Instance attributes (인스턴스 속성)
# 객체를 초기화하는 __init() magic method
def __init__(self, name, age):
self.name = name
self.age = age
# Instance method (인스턴스 메소드)
def getPersonalInfo(self):
print("Name : ", self.name)
print("Age : ", self.age)
# Instance method (인스턴스 메소드)
def ageGroup(self):
if self.age < 30:
return "under 30"
else:
return "over 30"
# 인스턴스 객체 생성 하는 법 (인스턴스 객체 = 속성 + 메소드로 구성되어있음)
personal = PersonalInfo("AAA", 20)
객체지향 프로그래밍(Object-Oriented Programming, OOP) 이란?
- 객체 지향 프로그래밍은 프로그램을 객체 단위로 프로그래밍한다.(각각의 객체는 서로 데이터나 정보를 주고 받는다.)
- 객체 지향 프로그래밍은 소프트웨어 개발과 보수를 용이하게 한다.
- 객체 지향 프로그래밍을 하면 코드가 직관적이다.
그리고 알아둬야할것은 - 코드는 언제나 바뀔수 있다(빠르게 수정 가능해야한다.) / 중복 코드를 배제한다.* 이 부분은 항상 생각 하고 있어야한다.
객체지향 프로그램이 왜 필요한가?
객체지향 프러그래밍을 하면 객체(변수+함수) 내의 응집력은 강하지만 객체 간의 응집력은 약하게 하여
소프트웨어의 개발, 유지보수, 업그레이드를 보다 쉽게 할 수 있도록 해주는 장점이 있다.
객체지향 프로그래밍 하는 방법(혹은 객체지향 프로그램 작성하는 방법)
- 클래스를 설계한다.(클래스는 속성값(attribute)와 메서드(method)로 구성되어있음.)
- 필요한 객체를 생성한다.
- 해당 객체 내에 속성과 메서드를 유기적으로 조작해가면 전체 코드를 작성한다.
'python' 카테고리의 다른 글
python 메서드 오버라이딩과 다형성 (1) | 2020.10.19 |
---|---|
python 다형성(Polymorphism) (0) | 2020.10.19 |
python 객체지향(OOP) 설계 원칙 (0) | 2020.10.18 |
python 정적메소드 (0) | 2020.10.18 |
python @property에 대해서 (0) | 2020.10.13 |