Clean & Blue 자세히보기

전공/정보처리기사 실기

정보처리기사 실기 - 9. 프로그래밍 언어 활용(2) /객체지향언어/스크립트

_청렴 2021. 5. 9. 16:54
반응형

NCS 정보처리기사

- 객체지향 프로그래밍 언어

- 구조적(절차적) 방식의 문제점을 극복하고 인간이 사고하는 방식대로

- 객체(object)라는 실 세계에 존재하거나 또는 개념적인 그 어떤 것을 표현한 것

- 기능과 자료가 통합된 객체 단위로 프로그래밍

  • 객체 : 클래스의 인스턴스
  • 클래스 : 객체를 생성하는 틀
  • 메세지 : 객체간 통신을 의미

 

- 객체의 구성요소

  • 개체(Entity) : 현실 세계에 보이는 본질
  • 속성(Attribute) : 자료 저장소 역할을 하며, 절차 지향 프로그래밍 변수와 대응됨
  • 메소드(Method) : 호출 단위 의미, 절차 지향 프로그램의 함수와 대응됨

 

- 대표적 객체지향 언어

  • Java : (과거)썬 마이크로시스템즈에서 개발
  • C# : 마이크로소프트에서 개발, 닷넷 프레임워크의 한 부분
  • 델파이
  • 스위프트 : Objective-C와 공존할 목적

 

- 객체지향 프로그램의 특징

-> 캡슐화, 추상화, 다형성, 정보은닉, 상속

 

- 캡슐화와 정보은닉

캡슐화기능과 데이터를 하나로 묶어 객체로 표현하는 것

-> 클래스 내부의 동작으로 모르더라도 클래스가 제공하는 메소드를 사용해 클래스의 기능 사용

-> 캡슐화를 통해 정보은닉이 가능해짐

 

- 정보은닉의 범위

  • private : 동일 클래스에서만 접근 가능
  • package : 동일 클래스, 동일 패키지
  • protected : 동일 클래스, 동일 패키지, 상속 관계
  • public : 모든 위치에서 젖ㅂ근 가능

 

 

 

 

 

- 추상화

실체에서 공통되는 속성이나 관심있는 부분만 추출하여 모델링한 개념

 

- 상속 

상위 클래스의 속성, 메소드를 상속하여 새로운 클래스를 생성하는 기법

-> 추상화된 클래스를 구체화시키는 방법

-> C++은 다중상속 지원, Java에서는 클래스의 다중상속은 지원하지 않지만 Interface의 다중구현 가능

 

- 다형성

동일한 이름의 오퍼레이션(메소드)이 각 클래스마다 다른 사양으로 정의될 수 있는 것

-> 하나의 클래스 안에서 사용되는 오버로딩과 상속관계의 클래스에서 사용되는 오버라이딩이 대표적

 

* 오버로딩 : 메소드 중복정의 -> 매개변수 타입에 따른 구분

* 오버라이딩 : 메소드 재정의 -> 클래스에 따른 구분

 

-> 오버라이딩은 객체지향 설계의 OCP(Open Close Principle), LSP(Liskov Substitution Principle), DIP(Dependency Inversion Principle)를 구현하기 위한 필수 요소

 -> 다형성의 핵심, 다양한 디자인 패턴에서 사용됨

 

- 스크립트 언어

소스코드를 컴파일하지 않고도 실행 할 수 있는 프로그래밍 언어

-> 주로 다른 응용 프로그램에 삽입되어 인터프리터를 통해 해석되고 동작

  -> 인터프리터가 있다면 어떤 운영 체제 위에서도 동일하게 동작

 

- 대표적인 스크립트 언어

  • JavaScript : 미국 넷스케이프에서 개발 -> Java와 기능상 아무런 관련이 없다.
  • JSP : Java Server Pages의 약자, 웹 페이지 동적 생성
  • PHP : 서버 측 스크립트 프로그래밍 언어
  • ASP : Active Server Pages의 약자, MS윈도우 서버에서 운영되는 서버 측 스크립트 언어
  • 펄(Perl) Practical Extraction and Report Language의 약자 -> 텍스트 처리에 주안점을 두고 개발된 스크립트 언어로 CGI 개발에 사용
  • Python : 플랫폼 독집적, 인터프리터식, 객체지향적, 동적타이핑의 대화형 언어

 

- 대표적인 스크립트 언어 Python

최근 인공지능 라이브러리 텐서플로우의 등장과 함께 많은 관심을 받고 있음

-> 변수 선언시 자료형은 자동으로 결정되고, 블럭을 표시하는 괄호 대신 Indent(들여쓰기)를 이용

 

- Python 기본 문법

- 변수와 자료형

val3 = "abc" //문자열
val4 = [1,2,3] //리스트(배열)
val5 = (1,2,3) //튜플
val6 = {"a":1, "b":2} //딕셔너리

 -> 튜플이란 자료형은 읽기 전용으로, 함수 리턴시 여러값을 전달하는데 유용

 

- 조건문 : if - elif - else

 

- 논리연산자 : AND, OR, NOT을 기호가 아닌 문자 그대로 사용

 

- 반복문

-> do - while 문은 없다.

-> 배열을 insertion 하는 방법은 for - in 구문 사용

array = ['가', '나', '다']
for s in array:
	print(s)

-> 인덱스를 사용하고자 할 때에는 range함수를 사용하여 범위 지정

for idx in range(0,3):
	print(array[idx])

 

- 함수

def sum(a, b): //선언
	return a+b

 -> 메소드 오버로딩은 지원하지 않음

 

- 클래스

class Human:
	def _init_(self, name, age): //생성자
    // 멤버변수 따로 선언없이 self 키워드로 처리
    	self.name = name
        self.age = age
    def getInfo(self): //멤버변수, 파라미터가 없더라도 self키워드 필요
    	return slef.name, self.age

man = Human("dk", "18")
info = man.getInfo()

print(info[0]) // 리턴값(튜플)의 첫번째 값 접근
print(info[1]) // 두번째 값 접근

 

- 상속

class Human:

class Soldier(Human): // Human 상속

 

- Python의 오버라이딩

class Shape:
	def draw(self):
    	pass
        
class Rect(Shape):
	def draw(self):
    	pass("Draw Rect")
        
class Circle(Shape):
	def draw(self):
    	pass("Draw Circle")

 

 

 

정보처리기사 실기 - 9. 프로그래밍 언어 활용(3) /선언형언어/라이브러리

- 선언형 언어 특정 선언으로만 프로그램을 동작 시키는 프로그래밍 패러다임 -> 무엇과 같은지를 설명하는 방식 - 선언형 언어의 유형 함수형 언어 - Haskell, LISP 논리형 언어 - Prolog, SQL 제약형 언

aapslie94.tistory.com