Programming Language) Week 11 - Array passing, abstraction

Jay Kim·2022년 1월 17일
0

Programming Language

목록 보기
11/11

array passing


-호출 함수 (calling function) / 호출 받는 함수 (callee function)

-함수 호출 : caller가 callee를 호출하여 인자를 받아 일을 하고 return value

=> caller -> callee

  • call by reference : 주소를 인자로 전달

ch09- Abstraction / ch10- object oriented programming using c++

-추상화 : 필요한 속성을 이용하여 단순화, 불필요한 부분을 제거 생략하여 복잡한 문제를 해결

-추상화 종료 2가지

​ -데이터 추상화) interger, char, string 등 하나의 새로운 data type

​ -제어 추상화) 절차를 단순화 , 함수 작성 후 함수를 호출

-추상화 자료형 (Abstract data type)

​ == 프로그래머 정의 데이터 유형 + sub-program

​ -사용자 정의 데이터 집합, 데이터 연산, 캡슐화

​ -매우 복잡한 데이터 : 외부 인터페이스 + 객체의 함수로 자세한 구현을 감춘다.

  • 중요 특징) 데이터 캡슐화
    • ADT의 내부 데이터 접근은 미리 정의된 함수만을 이용한다 --> 정보 은닉!
  • EX) stack, queue
  • C++에서의 데이터 추상화
    • class를 통하여 변수와 함수 같이 정의(member function, variable)
    • new, delete : 클래스 객체를 위한 메모리 관리

2.Generic mechanism

-일반화 함수 : 함수나 클래스를 추상화 -> 코딩에러를 줄이고 프로그램 크기를 줄임

-C++에서의 Template (c++에서의 일반화 Generic mechanism 표현 방법)

​ ex) template return-type func-name(parameter list) {}

3.Object oriented programming

-객체의 내부 상태 :variables, 객체의 행동 :function

= 변수 + 함수의 집합 ===> 객체를 만들기 위한 틀= class

-상속: 부모 클래스의 자료 구조와 연산 + 새로운 특징 -> 자식 클래스

​ -상속의 장점 :비용 절감, 코드 재사용, 복잡도 최소화

​ -단일 상속: 하나의 부모 클래스 / 다중 상속: 여러 개의 부모 클래스

​ -서브 클래스 (상속 클래스 )

​ ex) class B: public A {} -> A를 상속받는 B 클래스

<ch10- object oriented programming using c++>

-Simula = 최초의 객체지향 언어

-하향식 설계 : 하나의 큰 기능을 여러개의 작은 작업으로 나눔 -> 시스템 계층 구조도

-객체 지향 설계 : 여러 개의 모듈의 통합/관리/ 요구사항 변경에 대하여 유지보수가 용이함

​ -기능 중식 -> 데이터 중심

​ -코드 재사용 용이, 데이터와 연산을 함께 정의 , 정보 은닉

​ -데이터 캡슐화 : 정의된 연사나만을 내부 데이터를 접근할 수 있음

​ -다형성: 매개 변수에 따라 다르게 동작

​ -상속 : 자식 클래스는 부모 클래스의 속성과 연산을 공유

-생성자와 소멸자

​ -생성자 : constructor 객체 생성시 ex) stack(int size);

​ -소멸자: destructor 객체 소멸시 ex) ~stack(void);

-다형성

​ -정적 다형성: compile time에 판단 가능한 다형성

​ -동적 다형성: run time에 판단할 수 있는 다형성

​ -객체 지향 프로그래밍을 지원 == 동적 다형성을 지원

​ -가상 함수 : 실행 시간 함수 결정

​ -this pointer : 묵시적 매개변수로 함수를 호출하는 객체를 가리키는 포인터 (인자로 안 써준다.)

​ ex) void set(int x) { this -> x= x;}

​ -함수 중복 : 유사한 작업을 위해 같은 이름을 사용할 수 있음

​ -연산자 중복: 기존 연산자를 함수로 정의함

​ -템플릿 : 매개변수에 따라서 다양한 클래스와 함수를 생성

-가상함수(virtual function) -> 객체 지향의 중요한 특징!

​ -가상함수 : 기본 클래스에서 정의한 함수를 파생클래스에서 새버전으로 재정의하는 것

​ -기본 클래스 : 함수의 인터페이스 정의/ 파생 클래스 : 실제 함수의 몸체 정의

-Friend 함수

​ : 클래스의 private data를 접근할 수 있는 함수

​ + friend 함수 대신 interface 함수를 선호할 것

0개의 댓글

Powered by GraphCDN, the GraphQL CDN