일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- programmers
- C언어
- Java
- 페이코 추천인코드
- php 프로그래밍 입문 연습문제
- 최단 경로
- Flutter
- 페이코 추천인
- SWEA
- 플러터
- php 프로그래밍 입문 솔루션
- php 프로그래밍 입문 3판
- 플러터 개발환경 설정
- spring
- php 프로그래밍 입문 예제
- JAVA SPRING
- C
- 백준
- 자바 스프링
- 자바
- 한정 분기
- 페이코 초대코드
- 파이썬
- 스프링
- 배열
- php 프로그래밍 입문 문제풀이
- php 프로그래밍
- 페이코 친구코드
- php 프로그래밍 입문
- php
- Today
- Total
목록자바 (16)
ImJay
Getters 서로 다른 객체 A, B 가 있다고 가정하자. public class A { B B = new B(); int x = B.x; } public class B { int x; } 객체 A 는 객체 B 의 변수 x 를 참조하고 있다. 여기서, 객체 B의 x 변수명을 x1 로 수정한다면? 객체 A는 x1 를 사용할 수 없을 것이고, 이는 캡슐화가 제대로 이루어지지 않았다고 할 수 있다. 그렇다면 여기서 getter를 사용해보자. public class A { B B = new B(); int x = B.getX(); } public class B { int x1; public int getX() { return x1; } } 객체 B의 x 변수명이 x1 으로 수정되어도 객체 A는 아무런 영향 없..
생성자(Constructor)는 함수의 특징을 갖고 있기 때문에, 오버로드 또한 가능하다. public Exam() { x = new List[5]; } public Exam(int size) { x = new List[size]; } Exam 객체에서 변수 x의 배열의 크기를 기본 3으로 초기화하고 있다. 하지만 x 배열의 크기를 임의로 지정해주고 싶을 때, 정수 값을 넣어 선언해주면 된다. 이럴 경우 두 개의 생성자를 사용하게 된다. 위의 예제와 같이 필요에 따라서 여러개의 생성자를 사용할 수 있다. 이를 생성자 오버로드(Constructor Overload)라고 한다. 생성자 오버로드를 사용할 땐 중복된 부분을 제거할 수 있어야한다. 생성자 코드 중복을 제거하는 방법은 다음과 같다. public E..
생성자는 클래스 내에서 사용하는 변수들을 모두 모아 한번에 선언하고, 초기화해주는 함수이다. 생성자의 조건 1. 객체가 생성되자마자 무조건 제일 먼저 실행돼야 한다. 2. 생성될 때 단 한번만 실행돼야 한다. 생성자는 함수명이 없다. 즉, 정의할 때의 함수명은 초기화 할 객체를 한정하기 위한 형식명칭이다. class Exam { public Exam(){ x = 0; y = 0; } }
캡슐화가 깨지지 않기 위해서는 정보의 은닉화가 필요하다. 만약 클래스 A 에 변수 x 가 있다고 가정하자. 은닉화가 이루어지지 않았다면, 클래스 A가 아닌 어느 곳에서든 변수 x를 사용할 수 있다. 이렇게 된다면 캡슐화가 깨지게 된다. 캡슐화를 깨트리지 않기 위해, 정보의 은닉화가 필요한 것이다. 이를 위해서 private, public 을 사용한다. 클래스 A 내에 변수 x를 선언할 때, 앞에 private 를 붙이면 클래스 A를 제외한 어느 곳에서도 변수 x를 호출하여 사용할 수 없다. 그러나 public 을 사용하면 어디서든 변수 x를 호출하여 사용할 수 있다. 따라서, 통상적으로 우리가 서비스를 제공하는 함수들은 public 으로 선언해주고, 캡슐화를 지켜야하는 변수들에는 private 를 사용해..
Exam 이라는 클래스에서 선언되어있는 여러가지 함수를 사용하고 싶다고 가정해보자. x = new Exam(); Exam.input(x); Exam.print(x); ... 우리가 앞서 배웠던 객체지향의 캡슐화를 유지하기 위해서는 Exam의 함수들을 위와 같은 방식으로 호출해야 한다. 하지만, 인스턴스 함수를 사용하면 x = new Exam(); x.input(); x.print(); ... 위와 같은 방식으로 간단하게 호출이 가능하다. 단순하게 코드를 줄인다는 개념이 아니라, 변수 x 에게 책임을 부여한다고 생각하면 편하다. 전자의 코드에서는 우리가 직접 x라는 매개체를 통해 함수를 호출했다고 한다면, 후자의 코드에서는 우리가 만든 x라는 매개체가 직접 함수를 호출하는 것이다. 전자의 코드는 스태틱 메..
객체지향 프로그래밍(OOP-Object Oriented Programming)은 프로그램 내에서 표현하고자 하는 것들을 객체를 사용하여 모델링하는 방법이다. 객체(Object)는 우리가 표현하고자 하는 기능을 프로그램 코드와 데이터로 구성된다. 캡슐화(encapsulation)는 객체지향 프로그래밍의 특징 중 하나이다. 우리가 객체지향에 대한 개념을 잘 모른채로 복잡한 프로그램을 작성했다고 가정해보자. 프로그램의 모든 기능들은 하나의 메인 프로그램에 작성되어 있을 것이다. 여러 함수와 변수들이 복잡하게 얽혀 있다. 그런데 여기서 존재하는 변수 x의 이름을 x1로 변경한다고 해보자. x의 선언으로 돌아가 x의 이름을 x1으로 변경하는 순간, x를 사용하는 여러 수식들과 함수들에서 오류가 발생할 것이다. 모..