본문 바로가기

OOP10

[Java] 인터페이스 그리고 OOP 다형성 [인터페이스]1) 객체간의 상호작용 요청 목록, "인터페이스를 구현하는 객체는 이런 책임들을 진다"는 목록2) 이런 것을 할 수 있어 그러니 요청해(인터페이스) 목록- 이름 표준화- 내부만 변경하면 됨 : 구현부만 변경- 자료구조에서 표준 타입으로 관리할 수 있음 3) 인터페이스와 implements 클래스 == 다형성- 객체 다형성 : 다양한 역할을 할 수 있음, 손님인 동시에 바리스타도 될 수 있음- 메서드 다형성 : 구현객체에 따라 메서드 동작은 다양함, 선언부는 같지만- 필드 다형성 : 표준화된 타입(interface)로 선언, 참조하는 구현객체에 따라 실행 결과 다양- 매개변수 다형성 : 표준화된 타입(interface)로 선언, 인자 구현객체에 따라 실행 결과 다양=> 자동형변환됨, 자동형변환.. 2017. 9. 26.
[Java] 객체지향과 상속#2 - 자바 다형성 구현과 상속 [다형성과 상속](1) 다형성과 상속(extends, implements, Override)- 우선 다형성이란? : 하나의 타입이 여러 형태로 동작할 수 있다는 성질, OOP의 특징, 객체는 각각 고유한 성질을 가진다- 다형성은 어떻게 프로그래밍에서 나타나나?1) 객체타입에서의 다형성 : 여러 역할을 가질 수 있음- extends, implements 사용- A 카페에서는 손님, B 카페에서는 바리스타 2) 메서드의 다형성 : 같은 타입을 구현하는 객체타입이지만 각각 다르게 동작할 수 있음- 같은 Tire를 상속하고 Tire의 roll 메서드를 오버라이딩하지만 HankookTire, KumhoTire는 각각 다른 내부동작(성능)을 가짐- 같은 객체 타입에서 파생됐지만 각각의 특성을 가짐 - 자바 synt.. 2017. 9. 24.
[Java] 객체지향과 상속 #1 - 상속이란? [상속 기본개념] (1) 상속이란? 객체 관계를 중심으로 설명- 객체 간의 관계를 설정하는 것 : 여러 관계가 있지만 서로 속하는 관계로 설정함- 서로 속한다 : 상위와 하위(파생, 포함)관계로 설정하는 것을 말함- 예 : 타이어 > 한국타이어, 금호타이어 (2) 상속을 구체화한 자바 문법 : extends(class), implements(interface), Override(3) 상속 범위- private를 제외한 접근제어자 (4) extends를 사용해보자public class Account { /* private field */ private String account_num; private int money; /* public field */ public Account() { this.accou.. 2017. 9. 24.
[Java] 클래스 - 객체지향, static, instance, 접근제어자, 싱글턴 등 [객체지향과 클래스] : 조금 더 자세한 내용(http://jinbroing.tistory.com/207) (1) 객체 - 어떠한 기능을 만들기위해 필요한 존재 - 각각의 존재가 구분되고 고유의 상태와 행동을 가짐 : 독립적인 존재, 공용 인터페이스로만 요청이 가능 => 접근제어자 사용 : private, protected, public - 본질은 타 객체와 협력하는 존재(협력 요청 방법) : 객체.요청인터페이스() - 요청에 응해서 결과값을 줄 것인지는 응답 객체에 달림(캡슐화) - 타 객체가 협력 요청을 할 수 있도록 요청 인터페이스를 가지고 있음 (2) 객체지향 프로그래밍(OOP) : 객체들의 협력 관점에서 프로그래밍 하는 것 - 사용 : A 객체가 B 객체를 사용함, 사람과 자동차 - 집합 : 완.. 2017. 9. 19.
[Java] 개념은 제대로 알고가자 - 객체지향 무엇인가 [객체지향이란 무엇인가]- 궁금해졌다. 클래스에 대해서 공부를 막 시작하는 와중에 객체지향에 대해서 난 설명할 수 있을까에 대해서 생각했다. 결론은 할 수 없었다. 객체지향에 대해서 정확히 알지도 못하면서 객체지향언어로 프로그래밍을 한다? 누군가 개발해놓은 것 따라하는 것은 가능하나 스스로 못할 것이다. 중요한 패러다임 자체도 이해하지못하면서 그 언어로 개발한다는 것은 장점을 활용하지않겠다는 것 혹은 흉내만 내고 사고 확장은 못한다는 것 그래서 객체지향에 대해서 알아보기로 했다. 이후에 syntax 공부를 해도 늦지않다고 생각했다. 한번 할 때 제대로 하자 한번에 모두 다 파악하기에는 힘들 것이지만 앞으로의 공부에 많은 도움이 될 것이라 생각했다. 아래의 이야기는 객체지향의 사실과 오해 라는 책 + 구글.. 2017. 9. 16.
[자바스크립트] 객체지향 프로그래밍하기 [프로토타입 기반 객체지향]- 자바스크립트는 클래스가 존재하지않음- 객체지향 프로그래밍을 할 수 있음 : 객체, 인스턴스 변수/메서드, 정보은닉(클로저), 상속(prototype, __proto__)- 자바스크립트 객체지향 핵심 : 프로토타입 객체(체인)- 해당 포스팅을 통해 단계별로 상속, 정보은닉 하는 방법을 알아볼 것 : 자바스크립트는 어떻게 구현하나 [자바스크립트로 객체지향 프로그래밍하기]1) 기본적인 인스턴스 생성 구조12345function Person(name){ this.name = name;} var jinbro = new Person("jinbro");cs- Person 함수 : 클래스 역할이자 생성자(객체 생성 시 처음 호출 : 인스턴스 변수 값 및 메서드 설정을 위해) 역할- new.. 2017. 5. 26.
[자바스크립트] 함수는 무엇이다 [함수란]1) 일반적 기능- 특정 작업에 필요한 일련의 구문들을 그룹화하기위한 개념- 동일 작업을 필요할 때마다 불러오기위해 필요한 개념 : 코드 재사용 2) 자바스크립트 기능- 객체생성 : 생성자함수(http://jinbroing.tistory.com/54 : 생성자함수 검색)=> 정보은닉(데이터), 함수 생성, 모듈화- 함수도 객체(first-class object, 일급객체)이기때문에 변수나 객체, 배열에 저장될 수 있고, 다른 함수의 파라미터, 반환값으로 사용될 수 있음 [함수정의]1) 함수선언식 : function 키워드로 선언함- 함수명 : 함수명 생략 불가, 함수명으로 재귀적 호출(자신 호출), 디버거가 해당함수를 구분할 수 있는 식별자 역할- 파라미터(매개변수) : 함수가 호출될 시 필요한.. 2017. 3. 15.
[자바스크립트] 객체 #2 [객체지향]- 공통의 속성, 동작을 지니고 있지만 각기 존재마다 본인만의 특징이 있음, 이를 구현하기위한 방법- 인간의 표현방법과 똑같이 만듬 : 주어(S)가 (무엇을) 한다(V) - 객체.메소드 : 객체가 동작한다(메소드) - 이를 지향하는 프로그래밍 언어를 지칭하여 객체지향 프로그래밍 언어라 함- 객체지향에는 두가지 방법이 있음 : 객체를 지향하는 것은 맞지만 각기 다른 방법에 의해 객체를 구현함 [두 객체지향의 차이]1) 클래스 기반 객체지향 : 주로 c-family 언어(c++, java 등)- 객체 설계도인 클래스를 만듬 : 공통 속성, 동작(메소드), 공통 속성에 대한 값을 초기화하기위한 생성자 메서드를 가지고 있음- 클래스(설계도)에 맞춰 객체(new)를 생성함- 생성자 메서드에서 각 공통의.. 2017. 3. 14.
[ruby] 루비 기초편 - String [String이란]문자열(s,t,r과 같은 문자의 배열)을 저장하기위한 데이터타입 [String 선언]루비에서는 앞서 포스팅한 것처럼 데이터타입을 선언하지않고 데이터를 변수명에 집어넣으면 선언 완성!str = "문자열" [String 관련 메서드]String을 활용하여 어떤 기능을 사용할 수 있는지 살펴볼 것이다. 기본값 : str = "Hello" #는 주석처리이므로 메서드(코드)와는 아무런 상관없음, 주석 처리된 부분부터는 코드에 아무런 영향을 미치지 않음(#의 주석처리는 그 행만) 1) str * 3 #=> HelloHelloHello2) str Hello World3) str.concat("World") #=> Hello World4) str "Hello" #=> str과 Hello가 같으므로 0.. 2017. 2. 12.
[ruby] 프로그래밍을 배우는 이유 / OOP 개념 / 루비를! [프로그래밍을 왜 배워?] 프로그래밍을 왜배우는지 깨닫기위해서 컴퓨터가 어떤 것인지부터 알아야한다. - 컴퓨터는 인간이 하기 귀찮거나 어렵거나 대용량인 데이터들을 계산, 저장을 하는 기계 - 정해진 순서에 의해 데이터를 계산하고 저장하는 기계 - 컴퓨터는 0과 1(이진수 == 바이너리 == 기계어)로 이루어진 기계 - 인간이 쓰는 언어와는 다른 형태(언어)로 이뤄진 기계이다. [그럼 다시 프로그래밍을 왜 배워?] 우리가 기억하기 어려운, 기억하기 귀찮은, 자동으로 계산을 해주기를 바라는 등등의 이유로 우리는 컴퓨터를 사용하고 있다. 컴퓨터에게 명령을 내리면서..... 프로그래밍 언어는 컴퓨터에게 명령을 내리기위한 언어이다. 그들과 소통을 하기위한 언어라는 말이다. 우리가 어떤 계산을 해주는 프로그램 혹은.. 2017. 2. 5.