본문 바로가기

오늘은?

4월12일 프로그래밍 공부

OOP (object-oriented programming) ; 객체지향 프로그래밍

객체지향 프로그래밍(이하 줄여서 'OOP'라 칭함)은 컴퓨터 프로그램의 개발을 완전히 새로운 시각으로 바라다보는 혁명적 개념이라 할 수 있는데, 동작보다는객체, 논리보다는 자료를 바탕으로 구성된다. 프로그램은 전통적으로 논리적인 수행 즉, 입력을 받아 처리한 다음, 결과를 내는 것이라는 생각이 지배적이었다. 또한 프로그래밍을 한다는 것은 어떻게 자료를 정의할까 보다는 어떻게 논리를 써나가는 것인가로 간주되었다.

그러나 OOP는 프로그램에서 정말 중요한 것이 논리보다는 오히려 다루고자 하는 객체라는 시각에서 접근하고 있다. 객체의 예로는, 사람(이름, 주소 등으로 묘사되는)에서부터 건물까지, 그리고 상품 판매를 위한 매장(특성이 서술되고 다뤄질 수 있는)에서부터 컴퓨터 바탕화면의 아주 작은 요소인 버튼이나 스크롤바 같은 것들까지를 모두 망라한다.

OOP에서의 첫 단계는 다루고자 하는 모든 객체와, 그것들이 서로 어떤 연관성이 있는지를 식별하는 - 흔히 데이터 모델링이라고 부르는 - 작업이다. 일단 모든 객체를 식별했으면, 객체 클래스로 일반화하고 (플라톤의 "이상적" 의자 개념이 모든 의자를 대표한다고 생각하는 식으로), 그것이 담고 있는 데이터의 종류와 그것을 다룰 수 있는 모든 논리 순서를 정의한다.

논리 순서는 메쏘드라고 부르며, 클래스의 실제 인스턴스를 하나의 "객체"라 하거나, 어떤 상황에서는 하나의 "클래스 활성체"라 한다. 객체 또는 활성체는 컴퓨터 내에서 실제로 수행되는 것이다. 메쏘드는 컴퓨터 명령어를 규정하고, 클래스 객체의 특성은 관련 데이터를 규정한다.


------------------------------------------------------------------------------------------


인터페이스 : 하나의 시스템을 구성하는 하드웨어와 소프트웨어 또는 2개의 시스템이 상호 작용할 수 있도록 접속되는 경계(boundary)나 이 경계에서 상호 접속하기 위한 하드웨어, 소프트웨어, 조건, 규약 등을 포괄적으로 가리키는 용어

자바에서는 클래스의 기본 틀을 제공하면서 다른 객체 사이에서의 중간 매개 역할도 담당 한다.


---------------------------------------------------------------------------------------------------------


프로그래밍에서 배열을 사용하는 이유는 자료를 효율적으로 관리하기 위함이다.

자바는 배열도 객체로 취급한다. 기본 자료형은 객체가 아니지만 기본 자료형이 모여서 만들어진 배열은 객체이다.


배열 : 예를들어 10000개의 데이터를 저장하기 위해 같은 수의 변수를  선언해야 한다면 곤혹스럽기 때문에 배열을 사용하면 많은 양의 데이터를 손쉽게 다룰 수 있다.



list :  순서를 가지는 임의 객체의 집합.



Map : 기본 컨셉은 Key-Value입니다.


HashMap :  검색효율을 높여서 데이타를 저장하고 검색하는 자료구조

-Key-Value를 쌍(짝)으로 저장하고 Key로 검색한다.

-자료 검색시 Key의 값이 어떻게 구성되어있는가에 따라서 데이타의 저장위치를 내부적으로 결정하기 때문에(Hash알고리즘 적용) 빠르게 자료를 검색할 수 있다.

-이를 지원해 주기 위해 Object클래스에는 hashcode()라는 메서드가 있다.




동기화 : 공통된 자원에 접근하는것은 [반드시 한번에 하나!] 라는 조건이 붙게 되죠. 한 스레드(학생A)이 공유자원(컴퓨터)에 작업을 마치기 전 까지는 다른 스레드(학생B)가 공유자원(컴퓨터)에 접근을 할 수 없도록 약속해 버리는 것.







'오늘은?' 카테고리의 다른 글

날씨가 추워지고 있어요  (0) 2014.01.21
겨울 필수 아이템...  (0) 2014.01.14
프로그래밍 공부 정리  (0) 2012.04.09
귀여운 외모를 가졌지만 '악마 견' 이라고 불리우는 강아지  (0) 2012.02.07
사랑이란?  (0) 2012.01.31