사용자가 입력한 데이터를 저장하는 데이터 종류와 형태에 맞게 저장할 수 있게 도와주는 것
C 언에어서는 scanf(서식 문자열, 변수의 주소)
scanf("%3d", &a);
- % : 서식 문자임을 지정
- 3 : 입력 자릿수를 3자리로 지정
- d : 10진수로 입력
- &a : 입력받은 데이터를 변수 a의 주소에 저장.
- 공백과 . 도 자릿수를 갖는다.
C 언어에서 printf(서식 문자열, 변수) 함수로도 동일하게 작동한다.
d : decimal , c : character , s : string , f : float, e : exponent
p : pointer , l : long , o : 8진수 , x : 16진수, u : unsigned
예)
/* -----------1----------- */
char a[5];
scanf("%d %e %s", &i, &j, a);
// 입력 : 5468 3.483E-2 GOOD
printf("%4d %f %2s", i, j, a);
// 출력 : 5468 0.034830 GOOD
/* -----------2----------- */
scanf("%e", &i);
// 입력 : 123.45E-1
printf("%f\t %e\n", i, i);
// 출력 : 12.345000 1.234500e+01
/* -----------3----------- */
scanf("%d", &i);
// 입력 : 300
printf("[%5d], [%-5d], [%05d]", i, i, i);
// 출력 : [ 300]. [300 ]. [00300]
언어 | 특징 |
---|---|
C | - 1971 미국 벨 연구소 데이스 리치가 개발 - 소프트웨어 개발 언어 - 컴파일러 방식이며 컴퓨터 기종에 관계없이 프로그래밍 작성이 가능함. |
ALGOL | - 수치 계산, 논리 연산을 위한 과학 기술 계산용 언어 - PASCAL과 C 언어의 parent |
COBOL | - 사무 처리용 언어 - 영어 문장 형식임 - 4개의 DIVISION으로 구성됨 |
FORTRAN | - 과학 기술 계산용 언어 - 수학과 공학 분야의 공식, 수식과 같은 형태로 프로그래밍 가능. |
특징 | 설명 |
---|---|
캡술화 | - 데이터의 속성과 데이터 액션(함수)를 하나로 묶고 객체화하여 객체의 세부 내용이 외부에서 은폐되고 - 캡슐화된 객체는 재사용이 용이함 |
정보 은닉 | - 다른 객체에게 자신의 정보를 숨기고 허용된 연산만이 가능하게 함 |
추상화 | - 불필요한 정보를 생략하고 가장 중요한 속성만 모델화하는 것 - 데이터의 공통된 요소만 추출해서 슈퍼 클래스로 선정해서 구현 |
상속성 | - 정의된 부모 클래스의 모든 속성과 액션을 하위 클래스가 물려받음 - 같은 방법 또는 오버라이딩한 방법으로 중복으로 정의할 필요 없이 재사용이 가능. |
다형성 | - 객체의 속성과 메소드 등이 다양한 자료형에 속하는 것을 허용함. - 기능 확장과 객체를 변경할 때 타입 변경 없이 객체 주입만으로 수정할 수 있어 유용함 |
객체지향언어의 장점
객체지향언어의 단점
객체 지향 설계의 기본 원칙
우선 설명부터 확인
SOLID :
1 Single Responsiblity Principle (단일 책임 원칙)
- 소프트웨어의 설계 부품(클래스, 함수 등)은 단 하나의 책임/기능만을 가져야 한다.
2 Open-Closed Principle ((기능 추가는)개방-(기존 코드 수정은)패쇄 원칙)
- 기존의 코드를 변경하지 않고(Closed) 기능을 수정하거나 추가할 수 있도록(Open) 설계해야 한다.
3 Liskov Substitution Principle (리스코프 치환 원칙)
- 자식 클래스는 부모 클래스에서 가능한 행위를 수행할 수 있어야 한다.
4 Interface Segregation Principle (인터페이스 분리 원칙)
- 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다. 하나의 일반적인 인터페이스보다는, 여러 개의 구체적이고 클래스 본인이 직접 사용하는 인터페이스로 분리되어 있어야 한다.
5 Dependency Inversion Principle (의존 역전/주의 원칙)
- 의존 관계를 맺을 때, 변화하기 쉬운 것(구체화된 클래스) 보단 변화하기 어려운 것(추상클래스나 인터페이스)에 의존해야 한다는 원칙이다.
https://radait.tistory.com/4
https://woowacourse.github.io/javable/post/2020-10-27-polymorphism/
https://dev-momo.tistory.com/entry/SOLID-%EC%9B%90%EC%B9%99