[HARMAN] 세미콘 아카데미/공부내용

[Harman 세미콘 아카데미] Day_4 (Python 기초)

uiop1716 2025. 2. 9. 23:41

오늘은 4일차... 학교 기숙사를 정리하고 본가로 내려오느라 포스팅이 조금 늦었다.

다시 공부한다는 마음으로 작성해보겠다.

 

먼저,

함수 : 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드의 집합

   1) 내장함수: Python에 내장되어 있는 함수

                       ex) print, input 

   2) 외장함수: 존재하는 외부 함수를 불러다 import하여 사용하는 함수

                       ex) import random \n randint()

   3) 사용자 함수: 사용자가 함수를 직접 만듬

                       ㄴ 형태:   def 함수명():

                                             함수기능~~

                                             return 반환변수

함수 구조(형태)

                       

                  함수호출 ==> 함수명(인자,인자...)

 

함수 사용 이유

    - 반복적인 프로그래밍을 피함

    - 모듈화로 코드의 가독성을 올림

    - 손쉬운 유지보수

 

함수 예제도 풀어보았다.

정수와 연산자를 입력받아 감/가산을 하는 계산기를 만드는 것인데 오랜만에 함수를 공부하니 코드가 좀 지저분하였다.

교수님의 설명을 들으며 수정하며 코드의 가독성을 더욱 높였고, 잘 활용하여 앞으로도 깔끔하게 작성해야겠다.

 

abs활용 함수 정의 예제

 

 

나만의 사용자 함수를 만들며, 다른 사람들을 위해 설명을 하는 귀여운 기능이 있었다.

Docstring으로, 설명문 전 후로 큰따옴표 3개(""")만 추가하면 된다.                   

                           ex)   """설명"""      

Docstring

 

다음으로,

객체 지향 프로그래밍(Object Oriented Programming) : 여러 개의 객체들의 모임으로 파악하고자 하는 것. 각각의 객체는 메시지를 주고 받고 데이터를 처리한다. 데이터, 로직으로 구성된 애들이 메시지를 주고 받고 하는 것을 의미한다.

 

절차적 프로그래밍(C, fortran, COBOL)       VS       객체 지향 프로그래밍 (Java, C# ,Python)의 구도이다.

패러다임의 변화로 Data(속성), logic(행동) 간 message 전달로 변화 (절차적 -> 객체 지향적)

Data(Field) : 속성,  Logic() : 행동

 

 

객체 지향 언어는 주로 Class, Object와 같은 용어를 사용한다.

Class는 붕어빵 틀과 같은 존재, Object는 붕어빵과 같은 존재로, Class를 만들어 놓으면 Objcet를 무한대로 만들수 있다.

 

 

객체 지향 언어의 특징:

 

추상화 : 객체의 공통된 속성과 행위를 추출
                필요한 정보들로만 간추려서 구성

                코드 상에서 구현(로직)부분을 제외한 오직 선언 부분만을 설계

                ex) 토끼, 하마 이런거 특징 쓴거


- 캡슐화 : 관련된 필드와 함수를 하나로 묶고, 실제 구현 내용을 외부로부터 감추는 기법(정보 은닉)
                타인의 외부 조작 불가
                외부에서는 공개된 함수의 인터페이스를 통해 접근 가능
                Access Modifier 설정으로 접근에 대한 제한을 걸어버림
 
        외부에서 접근할 수 없게 field / function을 접근 제어(Access Modifier)
                  1. private(__변수명) : 해당 파일 안에서만 접근 
                  2. protected(_변수명) : 같은 directory, 상속 관계
                  3. public(변수명) : 누구나 어디에서나 접근 가능 


상속성 : 이미 작성된 상위클래스의 특성을 그대로 받아 하위 클래스 생성
                기존 코드를 그대로 재사용하거나 재정의 -> 재사용 + 확장
                ex) mammal()로 상속을 받아 묶어버림

 


- 다형성 : '다양한 형태로 나타날 수 있는 능력)

               같은 기능(함수)를 호출하더라도 객체에 따라 다르게 동작
               오버라이딩 기능 사용(상위클래스의 동작을 하위클래스에서 다시 정의하여 사용)

 

---> 장점: 1) 신뢰성 있는 S/W 쉽게 작성 가능

                2) 코드 재사용이 쉬움

                3) 유지보수 용이

                4) 직관적인 코드 분석 가능

                5) 소프트웨어 생산성 향상

 

 

교수님과 함께 실습을 진행하며 OOP의 특징에 직접 확인하며 공부하였다.

추상화, 상속성, 캡슐화, 다형성의 Overriding 등을 하나의 예제를 직접 실습하고 공부할 수 있었다.

특히, 정보 은닉에 대한 예제로 캡슐화의 개념에 대해 확실히 할 수 있었다.

 

 

캡슐화를 위한 bank.py

 

access modifier예제

 

 

 

느낀점: 기억 저편에 있던 OOP에 대해 오랜만에 공부를 하니 감회가 새로웠다. 시험기간에 밤을 세우며 OOP의 특성, 예제들을 공부했던 기억이 떠올랐다. 그때도 어려워 했었는데, 아직도 조금 어려운것 같다...ㅎ 나의 것으로 만들기 위해 복습만이 방법이다. 열심히 배우고 열심히 복습하자!