목록2024/05 (24)
Minwoo Dev.
문제 1Point 클래스에 대해서 다음 조건을 만족하는 형태로 - 연산자를 오버로딩 해보자.전역함수 기반으로 오버로딩멤버 별 - 연산의 결과를 담은 Point 객체 반환 정답소스 코드#include using namespace std;class Point{private: int xpos, ypos;public: Point(int x = 0, int y = 0) : xpos(x), ypos(y) {} void ShowPosition() const { cout 실행 결과 문제 2Point 클래스에 대해서 다음 조건을 만족하는 형태로 += 연산자와 -= 연산자를 오버로딩 해보자.멤버함수 기반으로 오버로딩연산 'pos1 += pos2'의 결과로 pos1의 멤버변수 값이 ..
상속(inheritance)클래스의 멤버변수와 메서드를 그대로 물려받는 것을 상속이라 한다. 물려주는 클래스가 부모 클래스, 물려받는 클래스는 자식 클래스이다.자식 클래스는 부모 클래스로부터 상속받아 추가적으로 멤버변수와 메서드를 작성할 수 있다.중복된 코드를 줄이고, 유지보수에 용이하다.상속은 extends 키워드를 사용한다.public class test{ public static void main(String[] args) { }} class A{ private int val; public void SayHi(){ System.out.println("HIII!!!"); }}class B extends A{// A 클래스를 상속받음} 위 코드를 보면 A라는 클래..
메소드 오버라이딩(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 = ..