1. 클래스
1) 객체지향 프로그래밍 - Object Oriented Programming
- Programming paradigm
- 데이터를 포함한 데이터구조 (field, attribute)와 함수(function, procedure, 메서드라고 부름)로 구성
- 객체 내부에 포함된 데이터를 메서드를 통해 수정 가능 (this 또는 self 키워드 사용)
- 프로그램은 모두 객체로 분해되어 설계되고, 객체 간 서로 상호작용을 통해 수행됨
2) 클래스 선언
3) 클래스 문법
- class 키워드로 시작됨
- class 키워드 다음에 클래스 이름이 위치
- 클래스 이름 뒤에 괄호 속에 상속된 클래스 이름이 위치
- 파이썬의 object 클래스의 기능과 속성을 모두 상속받는다.
- 사용자가 작성한 클래스(user-defined class)는 대문자로 시작하게 이름을 짓는다(Naming Convention)
4) 클래스 만들기 실습
1. Animal 이라는 이름의 클래스를 만든다. (object 클래스상속받는다)
2. 클래스 내부에 pass 라는 키워드를 적는다. (pass는 아무 일도 하지 않는다)
3. pass 를 지우고 그 자리에 생성자를 만든다.
4. def __init__(self): 라는 이름의 생성자를 만든다. self를 파라미터로 적는다.
5. 생성자 메소드 내부에 pass를 적는다.
6. 클래스에서 객체를 생성한다. cat = Animal()
5)__init__() 메소드와 self
- 생성자 : 객체가 생성될 때 자동으로 실행되며, 생성 시 필요한 코드를 포함
> __init__()
> __init__(self)
- self : 생성자 파라미터로 사용되며, 생성된 객체의 멤버를 접근할 때 사용
- 메소드, methods : 클래스 내부에 존재하는 함수
2. 클래스 - 상속
1) 상속 Inheritance
- 객체 재사용의 한 방법 - 다른 방법으로는 포함(Composition)이 있음
- 부모 클래스의 모든 속성(데이터, 메서드)를 자식 클래스로 물려줄 수 있음
2) 상속 연습문제
- Triangle 클래스를 Shape 를 상속해 만든다.
- __init__ 생성자를 만들고, self, side1, side2, side3 파라미터 만든다.
- self.side1 = side1, self.side2 = side2, self.side3 코드를 생성자 내부에 만든다.
- 클래스를 테스트 한다.
3. 클래스 - Override
1) Override
- 상속된 부모클래스의 메소드나 속성을 재정의하는 행위
- 아래 코드에서 CEO 클래스는 Employee를 상속받았으며, greet 메소드를 overriding 했다.
2) 클래스 - 연습문제
> 클래스는 복잡한 데이터와 메소드를 저장하기에 매우 유용한 데이터 구조이다.
1. “Car” 클래스를 만든다. 내부는 pass 키워드로 처리한다.
2. member variable을 만든다.
> pass 키워드를 제거하고, condition 변수를 만들고 “New” 값을 할당한다.
> my_car라는 Car 객체를 생성하고 멤버변수 condition 값을 print 한다.
3. 객체가 생성될 때마다 호출되는 생성자 ( __init__ )를 만든다.
> 4개의 파라미터를 받는다. - self, model, color, mpg
> 생성자를 통해 객체를 생성한다.
4. 멤버변수에 접근하다.
> my_car 객체의 멤버변수 3개를 각각 print 한다.
5. 메소드를 만들어본다.
> Car 클래스 안에 display_car() 메소드를 만든다.
> 스트링을 리턴한다. - "This is a [color] [model] with [mpg] MPG. “
> my_car 객체에서 display_car() 메서드를 호출하여 print 한다.
6. 클래스 멤버변수에 접근한다.
> drive_car 메소드를 추가해서 condition 값을 ‘used’로 바꾸고 값을 print 한다.
7. Car 클래스를 상속받아 ElectricCar를 만들고 __init__생성자에 ‘battery_type’ 변수를 추가한다.
[용어/개념] 파레토의 법칙(Pareto principle) / 길더의 법칙(Guilder's Law) 정의 및 소개
[AWS] NACL(Network ACL) vs Security Group(보안그룹)
[용어/개념] IPsec 개념 및 프로토콜(AH/ESP/IKE) 종류 비교 정리