전체 글(16)
-
[Kotlin] 클래스와 객체 다루기
1. 클래스 내부 구조 클래스 내부에서는 this 식으로 수신 객체를 참조할 수 있다. 수신 객체의 멤버 안에서 수신 객체의 멤버를 참조할 때는 this를 생략해도 된다. 하지만 this가 꼭 필요한 경우도 있다. 어떤 클래스의 프로퍼티와 메서드 파라미터 이름이 같은 경우, 이 둘을 구분하기 위해 프로퍼티 이름 앞에 this를 사용한다. fun main() { // p: 수신객체 fun showAge(p: Person) = println(p.age) // 프로퍼티 읽기 fun readAge(p: Person) { // 프로퍼티에 쓰기 p.age = readLine()!!.toInt() // 26 입력 } fun showFullName(p: Person) = println(p.fullName()) // 메..
2023.12.31 -
좋은 객체 지향 설계의 5가지 원칙(SOLID)
SOLID 설계원칙은 객체 지향 프로그래밍의 단골 면접 질문 중 하나라고 합니다. 좋은 설계란 시스템에 새로운 요구사항이나 변경사항이 있을 때, 영향을 받는 범위가 적은 구조를 말한다. 그래서 시스템에 예상하지 못한 변경사항이 발생하더라도, 유연하게 대처하고 이후에 확장성이 있는 시스템 구조를 만들 수 있다. 즉, SOLID 객체 지향 원칙을 적용하면 코드를 확장하고 유지 보수 관리하기가 더 쉬워지며, 불필요한 복잡성을 제거해 리팩토링에 소요되는 시간을 줄임으로써 프로젝트 개발의 생산성을 높일 수 있다. 이 5가지 원칙들은 서로 독립된 개념이 아니라 개념적으로 연관되어 있다. (1)SRP : 단일 책임 원칙(Single Responsibility Principle) // Before SRP class M..
2023.12.30 -
[Java] 변수와 자료형
변수의 생존기간 변수의 생존기간은 메모리에서 변수가 만들어진 이후 사라지기까지의 기간을 의미한다. 자바에서 개발자가 직접 변수를 생성하지만, 삭제는 JVM이 한다. 따라서 메모리에서 변수가 사라지는 시점을 잘 이해해야 한다!! 먼저 변수는 선언된 시점에 생성된다. 이후 생성된 변수는 자신이 선언된 열린 중괄호({) 의 쌍인 닫힌 중괄호(})를 만나면 메모리에서 삭제된다. { int a ; // 변수 a의 생성 시점 { a = 3; } } // 변수 a의 소멸 시점 자료형 JVM은 메모리를 효율적으로 관리하기 위해 메모리를 크게 메서드 영역, 스택 영역, 힙 영역으로 나눠 사용한다. 우리가 옷을 정리할 때 상의, 하의, 속옷등을 다른 서랍에 보관하는 것과 같은 원리다! 특히 메모리의 메서드 영역은 클래스,..
2023.12.20 -
[Java] JDK, JRE, JVM 이란? (자바 개발 환경 구축)
- JDK (Java Development Kit, 자바 개발 도구) JVM 과 JRE에 의해서 실행이 되고 컴파일러와 Class Library를 포함하는 소프트웨어 패키지 - JRE (Java Runtime Environment, 자바 런타임 환경) 컴퓨터 운영체제 위에서 실행되어 모든 운영체제에서 자바 프로그램이 실행될 수 있도록 하는 '환경' -JVM (Java Virtual Machine, 자바 가상 머신) Java 계층과 운영체제의 사이에서 중개자 역할로, java가 운영체제에 종속되지 않고 실행될 수 있는 환경을 제공한다. Garbage collector가 있어서 자동으로 불필요한 메모리를 정리해준다.
2023.12.20 -
[Kotlin] 기본 문법
주석 - 한 줄짜리 주석: // 로 시작하며 줄이 끝나면 주석도 끝난다. - 여러 줄 주석: /* 로 시작하고 */로 끝난다. - kDoc 여러 줄 주석: /** 로 시작하고 */ 로 끝난다. (kDoc 주석은 자바독과 비슷한 리치 텍스트 문서를 생성하기 위해 사용한다.) /* 여러 줄 주석 /*주석 안에 내포된 주석*/ */ println("Hello world") // 한 줄 주석 자바 vs 코틀린 자바와 달리 코틀린에서는 여러 줄 주석을 여러 번 내포시킬 수 있다. 변수 정의 val timeInSecond = 15 자바 vs 코틀린 - 코틀린에서는 줄 끝에 세미콜론을 생략해도 된다. - 위 코드는 변수 타입을 지정하지 않았는데도 프로그램이 성공적으로 컴파일되고 실행된다. 이유는 코틀린의 타입추론기능..
2023.11.26 -
[Android] Activity & Fragment
Activity엑티비티는 하나의 화면을 의미한다. 하나의 엑티비티 클래스는 하나의 xml로 된 레이아웃 파일과 연결된다. 앱이 실행될 때 화면에 UI를 표시하는 역할사용자의 클릭이나 입력 등의 이벤트를 처리하는 역할FragmentUI를 개별 요소로 쪼갤 수 있도록 해서 모듈성, 재사용성 ⬆️단독으로 존재할 수 없으며, Activity안에 여러 Fragment를 두고 서로 전환하면서 사용 생명 주기 onCreate()Activity 를 생성할 때 실행되는 함수이다. 여기서 할 일은, 뷰를 구성하고 데이터 바인딩, ViewModel 과 연결하는 등 초기화 작업들을 하는 것이다. setContentView() 를 이용해 레이아웃을 화면에 띄웁니다. onStart()Activity 가 "시작됨" 상태로 전환되고..
2023.11.21