프로그램 언어는 소프트웨어를 개발하기 위한 언어
종류 :
기계 언어 : 1과 0으로 만 이루어진 언어 , 컴퓨터의 "Native" 언어이다.
Assembly 언어 : 기계 언어와 1 : 1 대응되는 컴퓨터 저급 언어이다. 컴퓨터 CPU 에 따라 구조는 달라 질수 있다.
high-Level 언어 : 프로그래밍 언어 , 영어와 유사한 고급 언어 컴퓨터를 구동시키는 소프트웨어를 작성하기 위한 형식의 언어이다. 고급 언어 일수록 사람이 사용하는 언어에 가깝다고 볼수있다.
그림 1-1 언어 상관관계
상관관계 : 고 레벨 언어로 갈수록 구현의 용이성을 가지고 유동성과 휴대성을 가진다.
반면 기계 언어로 갈수록 실행이 빨라지며 기계친화가 된다.
절차적 프로그래밍(procedural programming) : 프로그래밍 패러다임의 일종으로서, C, COBOL, Fortran, LISP, Perl, HTML, VBScript 등이 있다.
그림 1-1-1 클래스와 오브젝트
클래스 (class) : 청사진(의미 : 미래에 대한 희망적인 계획, 구상등을 비유한말) 그 안의 객체를 만들기 위한 아이디어나 프로도타입, 속성(attribute)과 행위(behavior)를 정의한 것
객체 (Object) : 클래스 안에 구성(인스턴스 [instance]: 실제로 메모리상에 할당된 것)되는 요소, 그 객체 안에는 그 청사진을 구성하기 위한 요소들이 들어있다.
- 예를 들자면 클래스 예로 부터 계속하자면, 자동차의 색깔은 파란색이되면 좋겠다라는 문장으로 청사진을 꾸며 볼수 있을 텐데 이 문장에 색깔의 해당하는 것은 객체 속성 일것이고 파란색은 요소가 되겠다.~~ 객체 ~~속성 안의 요소는 유동적일 것이다.
그림 1-2 세부행위 속성 그림
행위(behavior/methods) : 메소드는 그 청사진으로 될 수 있는 물체의 기능들을 말하는 것이다. 클래스로부터 생성된 객체를 사용하는 방법
속성(attribute/Properties) : 그 안에 클래스가 가지는 속성, 값을 말한다.
캡슐화(영어: encapsulation) : 객체의 속성(data fields)과 행위(메서드, methods)를 하나로 묶는 것
예
어떤 회사에서 고용인의 임금을 구하기 위한 함수이다. 하기는 절차 지향형 코드로 표현한 것이다.
let baseSalary = 30000;
let overtime = 10
let rate = 20
function getWage(baseSalary, overtime, rate) {
return baseSalary + ( overtime * rate )
}
이렇게 한다면 다른 고용인의 임금을 구할때는 하나하나 다시 기본 임금이나 비율등을 다른 이름으로 재할당해 줘야 한다.
하기는 객체 지향형 코드로 구현한 것이다.
let employee = {
basesalary: 30000,
overtime: 10,
rate: 20,
getWage: function() {
return this.basesalary + ( this.overtime * this.rate )
}
};
employee.getWage()
30200
상기 코드 처럼 객체로 묶어 구현 할 수 있다.
복잡도를 줄여주고 재사용성을 증대시킨다.
상속(영어: Inheritance) : 새로운 클래스가 기존의 클래스의 자료와 연산을 이용할 수 있게 하는 기능이다.
추상화(영어 : Abstraction ) : 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만드는 것이다.
다형성(영어 : Polymorphism ) : 특정 기능을 선언(설계)부분과 구현(동작)부분으로 분리한 후 구현 부분을 다양한 방법으로 만들어 선택하여 사용할 수 있게 하는 기능이다.
예
String a = "a";
void test(String a){}
/*
**일반 객체지향언어의 경우 데이터 타입을 맞추지 않으면 에러가 난다.
출처: https://debugdaldal.tistory.com/152 [달달한 디버깅]
이 경우에 에러가 난다고 함 나는 자바를 배우지 않아 왜 에러가 나는지는 잘 모르겠음
*/
var a = "a";
function test( a ) {}
// 아마 자바스크립트는 선언과 할당을 같이 할수 있는 것에 반해서 다른 언어는 할수 없어서 그런가 보다. 아니라면 댓글 부탁드립니다.