목록전체 글 (294)
Minwoo Dev.
메소드 오버라이딩(method overriding)오버라이딩이란 부모 클래스에서 상속받은 메서드를 수정하고 싶을 때, 해당 메서드를 재정의하는 것이다.public class test{ public static void main(String[] args) { B b = new B(); b.SayHi(); }} class A{ private int val; public void SayHi(){ System.out.println("HIII!!!"); }}class B extends A{ } 위와 같이 A라는 클래스가 존재한다고 하자.A 클래스를 상속받아서 SayHi()를 실행한다면 무엇이 출력되는가 ? 부모 클래스의 메서드를 상속받은 것이기..
final Java에는 final이라는 키워드가 존재한다.final이라는 키워드는 기본적으로 상수화라는 의미를 가지고 있다. C/C++에서의 const와 비슷하다고 생각하면 될 거 같다. 이러한 final 키워드의 사용은 크게 4가지가 존재한다.인자로 final 키워드 사용final 변수final 메서드final 클래스 인자로 final 키워드 사용public class test { static void isPlus(final int val){ // 인자값에 final 키워드 사용 val = 8; // 인자로 받아온 값 변경시도 if(val>0){ System.out.println("양수입니다."); } else{ ..
일반적인 메서드클래스 내부의 일반적인 메서드는 객체를 생성한 후에 그 객체를 통해 해당 기능을 실행한다.public class test { public static void main(String[] args) { A a = new A(9); a.ShowVal(); }}class A{ private int val; public A(int val){ this.val = val; } public void ShowVal(){ System.out.println(this.val); }} 예를 들어, 위와 같은 코드는 A라는 클래스를 통해 객체 a를 생성한 후, ShowVal() 메서드를 사용하고 있는 모습이다.결과는 아래와 같다..
Java에서는 접근 지정자로 접근 가능 영역을 구분한다. public모든 곳에서 접근할 수 있다. protected 같은 패키지 내에서 접근이 가능하다.다른 패키지라도 상속받은 관계라면 접근이 가능하다. default(접근 지정자 없을 시 기본값으로 설정)같은 패키지 내에서 접근이 가능하다. private 동일한 클래스 내부에서만 접근이 가능하다. 접근 지정자접근 범위같은 클래스같은 패키지다른 패키지지만 상속관계다른 패키지public어디서든 접근 가능OOOOprotected동일 패키지 + 상속받은 클래스OOOXdefault같은 패키지에서만OOXXprivate같은 클래스에서만OXXX
화살표 함수(Arrow Function)화살표 함수는 변수에 함수를 저장하여 함수처럼 사용할 수 있는 방법이다.function sayHi(){ console.log("Hi");} 위와 같은 형태의 함수를 화살표 함수로 바꾸면,const sayHi = ()=>{ console.log("Hi");} 위처럼 변한다. 화살표 함수도 "함수" 라는 명칭을 가지고 있기 때문에 그냥 함수처럼 사용하면 된다고 생각하는 사람이 많을 거 같다.하지만 함수처럼 모든 곳에 사용할 수 있는 건 아니다. 그 이유는 화살표 함수(Arrow Function)의 this 바인딩과 관련있다. 일반적인 함수는 this를 기본적으로 가지고 있다.따라서 이 this를 함수에서 출력한다면 아래처럼 나타날 것이다.function a(..
디자인 패턴(Design Pattern)프로그램을 개발하다 보면 많은 문제점들이 발생한다. 이러한 반복적으로 발생되는 문제점을 해결하기 위해서는 많은 시간과 노력이 필요할 것이다.개발하면서 이러한 문제들을 최소화하고 수정하기 쉽도록 구조적으로 만든 패턴이 디자인 패턴이다. MVC도 여러 디자인 패턴의 종류 중 하나이다. MVC란 ?MVC는 각각 Model, View, Controller를 의미한다.애플리케이션 개발 시 사용하며, 개발 영역을 Model, View, Controller의 세가지로 나눈다고 하여 MVC라고 불린다.UI 패턴과 비즈니스 로직 영역이 구분되어 서로 영향을 주지 않아 개발과 유지보수를 용이하게 만들었다. Model - 데이터와 비즈니스 로직을 관리앱이 포함해야할 데이터가 무엇인지..
동기 방식(Synchronous Processing Model)작업을 순차적으로 수행하는 방식여러개의 작업이 있는 경우에 한가지 작업을 수행 중이라면 뒤의 작업들은 대기하여야 한다.앞의 작업이 끝나지 않았다면 요청도 받지 않는다. 구글 플레이스토어와 애플 앱스토어를 모두 사용해본 사람은 알 것이다.구글 플레이스토어의 앱 업데이트는 하나의 앱이 업데이트 중이라면 나머지 앱들은 대기 중이라고 뜨며 업데이트가 진행되지 않는다. 비동기 방식(Asynchronous Processing Model)순서와 상관없이 작업을 수행하는 방식여러개의 작업이 있는 경우에 수행되고 있는 작업이 끝나지 않았더라도 요청을 받을 수 있다.모든 요청을 받아둔 다음 앞의 작업이 끝났다면 수행한다. 앱스토어는 업데이트를 요청하면 여러..
예제 Employeemanager4.cpp를 확장하여 다음 특성에 해당하는 ForeginSalesWorker 클래스를 추가로 정의해보자. Employeemanager4.cpp#include #include using namespace std;class Employee{private: char name[50];public: Employee(char *name) { strcpy(this->name, name); } void ShowYourName() const { cout ShowSalaryInfo(); } void ShowTotalSalary() const { int sum = 0; for (int i = ..
큐(Queue) 선입선출(FIFO, First in Finst out)의 구조이다.일상생활에서 많이 사용되는 자료구조이다.대기번호처럼 순서대로 출력과 입력이 이루어진다.변수로는 front, rear를 사용한다.두 변수의 초기값은 -1이며, Enqueue(삽입)은 rear에서, Dequeue(삭제)는 front에서 이루어진다. 배열을 사용한 큐배열을 사용하면 공간의 크기가 정적이다.이러한 점을 보완하기 위해 원형 배열을 사용한다. isEmpty()front와 rear가 같은 값이라면 그 큐는 비어있는 상태이다.int isEmptyQ(){ if (front == rear) return 1; else return 0;} isFull()front가 rear의 바로 ..
스택(Stack)선입후출(First-in Last-out)의 구조이다.자료들이 계속해서 겹겹이 쌓이는 형태를 나타낸다.상단의 위치를 나타내는 top을 변수로 가진다.top의 초기값은 -1이다.top이 -1일 때 이 스택은 비어있는 스택이다. isEmpty()top이 -1이라면 true그 외의 경우는 falseint isEmpty(){ if (top == -1) return 1; else return 0;} isFull()top이 (스택 크기-1)이면 true를 반환그 외의 경우는 falseint isFull(){ if (top == STACK_SIZE - 1) return 1; else return 0;} Push(int va..